मेरे पास एक ऑब्जेक्ट (एक UIViewController) है जो मेरे द्वारा परिभाषित प्रोटोकॉल के अनुरूप हो सकता है या नहीं भी हो सकता है।
मुझे पता है कि मैं निर्धारित कर सकता हूं कि ऑब्जेक्ट प्रोटोकॉल के अनुरूप है, तो सुरक्षित रूप से विधि को कॉल करें:
if([self.myViewController conformsToProtocol:@protocol(MyProtocol)]) {
[self.myViewController protocolMethod]; // <-- warning here
}
हालाँकि, XCode एक चेतावनी दिखाता है:
warning 'UIViewController' may not respond to '-protocolMethod'
इस चेतावनी को रोकने का सही तरीका क्या है? मैं self.myViewController
एक MyProtocol
वर्ग के रूप में कास्ट नहीं कर सकता ।
id<MyProtocol> p = (id<MyProtocol>)self.myViewController;
यह उत्तर और @andys दोनों सही हैं, लेकिन उसका उपयोग अधिक सही है।