objective c - "भेजने के प्रकार 'एनएसएसटींग*' प्रकार के पैरामीटर 'एनएसएसटींग*' डिस्काउंट क्वालिफायर" चेतावनी




objective-c nsstring (2)

आपको अपनी निरंतर स्ट्रिंग को निम्नानुसार घोषित करना चाहिए:

NSString * const kSomeConstantString = @""; // constant pointer

के बजाय:

const NSString * kSomeConstantString = @""; // pointer to constant
// equivalent to
NSString const * kSomeConstantString = @"";

पूर्व एक NSString ऑब्जेक्ट के लिए एक स्थिर सूचक है, जबकि उत्तरार्द्ध निरंतर NSString ऑब्जेक्ट के लिए एक सूचक है।

एक एनएसएसटींग NSString * const कॉन्स का उपयोग करके आप एक अलग एनएसएसटींग ऑब्जेक्ट को इंगित करने के लिए kSomeConstantString को पुन: असाइन करने से रोकते हैं।

विधि isEqualToString: प्रकार NSString * तर्क की उम्मीद है। यदि आप एक स्थिर स्ट्रिंग ( const NSString * ) पर पॉइंटर पास करते हैं, तो आप अपेक्षा से अलग कुछ पास कर रहे हैं।

इसके अलावा, NSString ऑब्जेक्ट्स पहले से ही अपरिवर्तनीय हैं, इसलिए उन्हें const NSString करना व्यर्थ है।

मेरे पास कॉन्स्टेंट एनएसएसटींग है, जिसे मैं कॉल करना चाहता हूं:

[newString isEqualToString:CONSTANT_STRING];

कोई गलत कोड यहाँ?

मुझे यह चेतावनी मिली:

'एनएसएसटींग *' प्रकार के पैरामीटर के लिए 'कॉन्स्ट एनएसएसटींग *' भेजना क्वालीफायर छोड़ देता है

इन्हें कैसे घोषित किया जाना चाहिए?


इसे पढ़ने के लिए कुछ मिनट अतिरिक्त। स्थिरांक पर विपरीत नरक पर संकेत और इसके विपरीत।

http://c-faq.com/decl/spiral.anderson.html







constants