2015-10-09 6 views
9

मूल रूप से, मैं निम्नलिखित के रूप में बहुत ही सरल कुछ है। ताकि मैं [UIAlertAction okay] से बस एक ठीक कार्रवाई बना सकते हैं UIAlertAction का एक कस्टम श्रेणी;सूचक समारोह इंटरफेस पर एक nullability प्रकार निर्दिष्टकर्ता याद आ रही है

@interface UIAlertAction (Custom) 
+ (UIAlertAction *)okay; 
@end 

@implementation UIAlertAction (Custom) 
+ (UIAlertAction *)okay 
{ 
    return [UIAlertAction actionWithTitle:@"Ok" 
            style:UIAlertActionStyleCancel 
            handler:nil]; 
} 
@end 

और बाद में, मैं तय है कि मैं भी एक पूरा हाथ के बल्लेबाज के साथ एक चाहते हैं तो इंटरफ़ेस इस बन:

@interface UIAlertAction (Custom) 
+ (UIAlertAction *)okay; 
+ (UIAlertAction *)okayWithHandler:(void (^ __nullable)(UIAlertAction *action))handler; 
@end 

और और मैं मुट्ठी लाइन पर चेतावनी संदेश प्राप्त करना प्रारंभ:

सूचक एक nullability प्रकार निर्दिष्टकर्ता

याद आ रही है

मुझे लगता है कि नल के विचार को समझने (ईमानदारी से, नाम बहुत वर्णनात्मक है)। लेकिन मुझे समझ में नहीं आता है कि दूसरे फ़ंक्शन पर __nullable क्यों जोड़ना पहले के लिए निरर्थक विनिर्देशक बनाना आवश्यक होगा?

उत्तर

23

लेकिन मुझे क्या समझ में नहीं आता है कि दूसरे फ़ंक्शन पर __nullable जोड़ने से पहले के लिए निरर्थक विनिर्देशक होना आवश्यक हो जाएगा?

यह बस है, क्योंकि जैसे ही आप की आपूर्ति एक शीर्ष लेख में किसी भी nullability जानकारी के रूप में, आपको लगता है कि शीर्ष लेख में सब कुछ के लिए nullability जानकारी की आपूर्ति करने की संभावना है। न तो संपूर्ण एपीआई निर्दिष्ट नहीं है या संपूर्ण एपीआई निर्दिष्ट है, शून्यता के संबंध में। कंपाइलर सिर्फ आपको चेतावनी दे रहा है कि आपने नौकरी समाप्त कर दी है।

+0

आपको बहुत बहुत धन्यवाद! अब मैं समझता हूं कि मुझे इतनी चेतावनी क्यों मिल रही है और केवल मेरी कक्षाओं में से एक में। मैं सिर्फ एक अन्य परियोजना है, जो कुछ '__nullable' घोषणा है से कुछ विधि घोषणा कॉपी करने के लिए हुआ है। मैंने अभी घोषणा की है, यह सभी चेतावनियां चली गई हैं! –

संबंधित मुद्दे