2011-06-30 8 views
44

के साथ प्रतिनिधियों का उपयोग कैसे करें मैं एआरसी बैंडवैगन पर कूद गया हूं। अतीत में मैं अपने प्रतिनिधि गुण इस तरह घोषित होगा:स्वत: संदर्भ गणना

@property(assign) id<MyProtocol> delegate; 

तो मैंने सोचा कि मैं एआरसी के तहत इस करना होगा:

@property(weak) id<MyProtocol> delegate; 

ऐसा नहीं है। मीटर में @synthesize बयान पर मैं एक संकलन त्रुटि है:

* सिमेंटिक अंक: मौजूदा इवर __weak संपत्ति 'प्रतिनिधि' के लिए 'प्रतिनिधि' __weak किया जाना चाहिए *

मैं इसे कमजोर के रूप में घोषित किया है हालांकि! साथ ही मैं कमजोर संदर्भित संपत्ति पर प्रोटोकॉल को लागू करने वाली कक्षा को कैसे पास करूं? क्या मुझे इसे उन अजीब obj_unretained कॉल में से एक में लपेटना है?

इस पर किसी भी मदद की बहुत सराहना की जाएगी।

+2

एआरसी सार्वजनिक रूप से चर्चा की जा सकती है। आईओएस 5 विशिष्ट एपीआई नहीं कर सकते हैं। – bbum

+0

निहितार्थ यह है कि आईओएस 5 जीसी ओब्जे-सी का समर्थन करता है, जो संभवतः गोपनीय है जब तक ऐप्पल ने इसकी घोषणा नहीं की (मुझे नहीं पता कि उनके पास क्या है; मैं रखने में बहुत व्यस्त हूं)। –

उत्तर

65

"ivar" का अर्थ है "इंस्टेंस वैरिएबल", जिसे आपने नहीं दिखाया है। मैं दांव लगा रहा हूँ यह कुछ इस तरह दिखता है:, इवर

@interface Foo : NSObject { 
    __weak id delegate; 
} 

@property (weak) id delegate; 

संपत्ति कमजोर होने का दावा करते हैं कि मूल्य:

@interface Foo : NSObject { 
    id delegate; 
} 

@property (weak) id delegate; 

क्या त्रुटि कह रहा है कि यह इस तरह दिखना चाहिए भंडारित होने पर समाप्त होना भी कमजोर होना चाहिए।

+43

या आप पूरी तरह से ivar को हटा सकते हैं और '@ सिंथेसाइज' लाइन को आपके लिए भी संभाल सकते हैं। :) –

+3

आपकी धारणा सही थी। और डेवडेलोंग - क्या आप मुझे बता रहे हैं कि 1.5 वर्षों के लिए मैं हेडर में आईवर के साथ-साथ @property घोषणा के साथ आईओएस लिख रहा हूं और जब मैं संश्लेषित करता हूं तो मुझे इवर की आवश्यकता नहीं होती है ?! यह अद्भुत लॉल है! धन्यवाद! –

+2

@ माइक बुरा महसूस नहीं करते हैं। पिछले वर्ष + में आर्किटेक्चर और कप्लर्स में इस प्रकार की तरह की संतोषजनक करने की क्षमता। हालांकि, यह अब पूरा हो गया है। – bbum