मैं ObjectiveC सीख रहा हूं और आत्मनिरीक्षण से संबंधित एक समस्या में भाग गया। असल में, मैं वस्तुओं की एक सरणी के माध्यम से लूपिंग कर रहा हूं और यह निर्धारित कर रहा हूं कि वे lowercaseString
चयनकर्ता स्वीकार करते हैं या नहीं। यदि वे करते हैं, तो मैं ऑब्जेक्ट पर उस चयनकर्ता को कॉल करता हूं। यह सुनिश्चित करने के बाद कि ऑब्जेक्ट उस चयनकर्ता को जवाब देता है, मैं इसे कॉल करता हूं। हालांकि, जब मैं करता हूं, मुझे यह चेतावनी मिलती है: "चेतावनी: 'NSObject;' -lowercaseString 'का जवाब नहीं दे सकता है""एनएसओब्जेक्ट" से छुटकारा पाएं '-omeMethod' 'का जवाब नहीं दे सकता है चेतावनी
हालांकि कोड लिखित के रूप में ठीक काम करता है, लेकिन मुझे चेतावनी नहीं मिलनी चाहिए। मुझे लगता है कि यह सुनिश्चित करने के लिए एक "सही" तरीका है कि मुझे यह चेतावनी नहीं मिलती है (यानी चेतावनियां बंद किए बिना)। कोई विचार?
NSMutableArray *myArray = [[NSMutableArray alloc] init];
[myArray addObject:@"Hello!"];
[myArray addObject:[NSURL URLWithString:@"http://apple.com"]];
[myArray addObject:[NSProcessInfo processInfo]];
[myArray addObject:[NSDictionary dictionary]];
SEL lowercaseSelector = @selector(lowercaseString);
for (NSObject *element in myArray) {
if ([element respondsToSelector:lowercaseSelector]) {
NSLog([element lowercaseString]); // Warning here
}
}
इसके अलावा, अगर मुझे "चयनकर्ता" शब्दावली गलत हो रही है, तो कृपया मुझे सही करें। :) – Tyson
* एनएसएलओजी को गैर-स्थिर तारों को पास न करें। एक सुरक्षा जोखिम है। आपको लगता है कि आप इस मामले में सुरक्षित हैं, लेकिन इसकी आदत में न आएं। आप अनिवार्य रूप से इसे ऐसे मामले में कर सकते हैं जो एक सुरक्षा छेद खोलता है। – kperryua
क्या आपके पास इस सुरक्षा छेद के बारे में अधिक जानकारी के लिए एक लिंक है? मैं निश्चित रूप से इसके बारे में अधिक पढ़ने में रुचि रखता हूं। – Tyson