2012-09-21 16 views
8

मैं सिर्फ https://github.com/MugunthKumar/MKNetworkKit के कुछ स्रोत कोड पढ़ रहा था, और देखा यहउद्देश्य सी में [आत्म आत्म] का क्या अर्थ है?

+(void) initialize { 

    if(!_sharedNetworkQueue) { 
    static dispatch_once_t oncePredicate; 
    dispatch_once(&oncePredicate, ^{ 
     _sharedNetworkQueue = [[NSOperationQueue alloc] init]; 
     [_sharedNetworkQueue addObserver:[self self] forKeyPath:@"operationCount" options:0 context:NULL]; 
     [_sharedNetworkQueue setMaxConcurrentOperationCount:6]; 

    }); 
    }    
} 

क्या है कि [स्वयं आत्म] यहाँ क्या मतलब है?

+1

मेरा पहला अनुमान यह है कि यह स्वयं के मेटा वर्ग को इंगित करता है। शायद कोई यह पुष्टि कर सकता है कि यह सच है या नहीं? ओबीजेसी के मेटा वर्गों पर अधिक जानकारी यहां: http://cocoawithlove.com/2010/01/what-is-meta-class-in-objective-c.html भी निम्नलिखित पढ़ें: http://www.sealiesoftware.com /blog/archive/2009/04/14/objc_explain_Classes_and_metaclasses.html ('उद्देश्य-सी वर्ग विधियों जैसे व्यावहारिक लक्ष्यों के लिए मेटाक्लास का उपयोग करता है, लेकिन अन्यथा मेटाक्लास को छुपाता है। उदाहरण के लिए, [NSObject क्लास] [NSObject self] के समान है।) –

+2

@WolfgangSchreurs: नहीं। – Jesper

उत्तर

10

-self एक विधि defined in the NSObjectprotocol है। यह रिसीवर देता है, यानी, वह वस्तु जिसे आप self संदेश भेजते हैं। यदि आप [a self] करते हैं, तो आपको a वापस मिलते हैं, और हां, यदि आप [self self] (या self.self) करते हैं, तो आपको वास्तव में self वापस मिल जाएगा।

यह महत्वपूर्ण मूल्य पथों में उपयोगी हो सकता है जहां आप एक नया घटक जोड़ना चाहते हैं, लेकिन पूरे वस्तु को कोको बाइंडिंग में देखना चाहते हैं। मुझे आपके द्वारा पोस्ट किए गए कोड में इसका कोई भी एप्लिकेशन दिखाई नहीं देता है, लेकिन यह मामला हो सकता है कि प्रॉक्सी self को अलग-अलग, दूरस्थ/अग्रेषित ऑब्जेक्ट की बजाय प्रॉक्सी को इंगित करने के लिए अपनाए।

8

यह self जैसा ही है, केवल एक अनावश्यक कॉल है।

[self self] // ---> Same object of self 
संबंधित मुद्दे