2011-06-15 9 views
9

NSNotFound को NSIntegerMax के रूप में परिभाषित किया गया है, जिसे LONG_MAX के रूप में परिभाषित किया गया है।एनएसएनओटीफ़ाउंड, एनएसआईएनटेगर, एनएसयूइंटर, और एनएसआरेंज। स्थान

NSRange.location को NSUInteger के रूप में परिभाषित किया गया है।

कुछ फाउंडेशन विधियां NSRange लौटाती हैं जिनका स्थान मान NSNotFound है।

तो, एक बार यह तुलना करता है:

if (aRange.location == NSNotFound) 

लेकिन है पर हस्ताक्षर किए और अहस्ताक्षरित पूर्णांकों के बीच तुलना कि एक चेतावनी उत्पन्न करनी चाहिए कि नहीं?

उत्तर

12

आप हस्ताक्षरित स्थिर के साथ एक हस्ताक्षरित (64 बिट) चर की तुलना कर रहे हैं जो चर की सीमा में फिट बैठता है (यह नकारात्मक नहीं है)। तो चेतावनी की कोई ज़रूरत नहीं है।

चेतावनियां आम तौर पर दोनों तरफ नकारात्मक स्थिरांक या चर के खिलाफ तुलना करते समय दिखाई देती हैं (यानी एक हिस्सा नकारात्मक है या दूसरा नकारात्मक हो सकता है) जबकि दूसरा केवल सकारात्मक या शून्य है)।

एक साइड नोट: एनएस नॉटफाउंड 32 बिट बनाम 64 बिट प्लेटफॉर्म पर अलग है, इसलिए हार्डकोड को कहीं भी हार्डकोड या स्टोर न करें।