17

सबसे पहले मैंने देखा है कि "अज्ञात चयनकर्ता उदाहरण के लिए भेजा गया" मुद्दा के बारे में कई प्रश्न हैं।
मैंने कुछ देखा है लेकिन श्रेणी संपत्ति में परिभाषित करने के बारे में कुछ भी नहीं देखा है ...आईफोन: संपत्ति के साथ श्रेणी + "अपरिचित चयनकर्ता उदाहरण के लिए भेजा गया" अपवाद

मेरे पास एक संपत्ति के साथ UILabel पर एक श्रेणी है।
गेटर और सेटर परिभाषित किए गए हैं।
असल में मेरे पास 2 अलग-अलग श्रेणियों में समान संपत्ति है (2 अलग-अलग वर्गों के लिए: UIButton और UILabel)।
समस्या यह है कि मैं UIButton के लिए इस संपत्ति तक पहुंच सकता हूं लेकिन UILabel के लिए नहीं।
एक बार जब मैं UILabel (टेक्स्ट) श्रेणी में किसी भी विधि/संपत्ति तक पहुंचने का प्रयास करता हूं तो यह "- [UILabel परीक्षण] छोड़ देता है: अपरिचित चयनकर्ता उदाहरण 0x4e539f0" अपवाद पर भेजा जाता है।

दोनों श्रेणियां फ़ाइलें आयात की जाती हैं।

मुझे नहीं पता कि समस्या क्या है।

// UILabel+text.h 
@interface UILabel (text) 
    - (void)test; 
@end 

// UILabel+text.m 
@implementation UILabel (text) 
- (void)test { 
    NSLog(@"test"); 
} 
@end 

// UIButton+text.h 
@interface UIButton (text) 
    - (void)test; 
@end 

// UIButton+text.m 
@implementation UIButton (text) 
- (void)test { 
    NSLog(@"test");// works 
} 
@end 

// Usage (in UIViewController class) - both elements are defined in XIB 
[self.button test];// works 
[self.label test];// exception 

किसी भी मदद की सराहना की जाएगी:

यहाँ कुछ कोड है।
मेरे पास संभावित समस्या के लिए कोई सुराग नहीं है ...

धन्यवाद।

माइकल।

+0

दिलचस्प ... क्या वे कोड द्वारा बनाए गए काम कर रहे हैं? (कोई XIB) – Eonil

+0

समस्या के संभावित स्रोत को कम करने के लिए '[[[UILabel alloc] init] परीक्षण] का प्रयास करें। – Jim

+1

तेज उत्तरों के लिए धन्यवाद। @ स्टेवन ने पहले से ही मेरे प्रश्न का उत्तर दिया है। "UILabel + text.m" फ़ाइल को एक अलग लक्ष्य में जोड़ा गया था ... –

उत्तर

42

क्या आप एक स्थिर पुस्तकालय का उपयोग कर रहे हैं? यदि ऐसा है, तो अन्य लिंकर ध्वज में all_load जोड़ें।

क्या आप वाकई "UILabel + text.m" लक्ष्य में हैं?

+4

यही वह है! मैं हमेशा लक्ष्य मुद्दे को भूल जाता हूं ... क्या डिफ़ॉल्ट रूप से सभी लक्ष्यों में नई फ़ाइलों को जोड़ने के लिए कोई तरीका है? –

+0

जो मुझे नहीं पता, एक्सकोड आमतौर पर मेरे मामले में इसका तरीका समझता है। शायद यह आपके अंतिम चयन के लिए डिफ़ॉल्ट है? –

+0

'-all_load' अधिकांश समय काम करता है, यदि आप कारण जानना चाहते हैं तो इस उत्तर की जांच करें: http://stackoverflow.com/a/2906210/146032 – bithavoc

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