उद्देश्य-सी कक्षा के कार्यान्वयन ब्लॉक (@ कार्यान्वयन ... @end) के अंदर या बाहर घोषित सी फ़ंक्शन (स्थिर या नहीं) के बीच क्या अंतर है?ओब्जे-सी: सी फ़ंक्शंस @ कार्यान्वयन ब्लॉक के अंदर या बाहर घोषित किया गया है, क्या अंतर है?
इस विशेष रूप से सच ?:
आप सीधे वस्तु के अंदर निकालना पड़ सकता है, तो आप अपने वर्ग के @implementation ब्लॉक के अंदर इस समारोह रख सकते हैं, और फिर आप के साथ उदाहरण चर का उपयोग कर सकते है सी तीर ऑपरेटर। लेकिन यह शरारती है, इसलिए अपनी शुद्धता की शुद्धता को संरक्षित करने के लिए आपको अपनी वस्तु पर विधि कॉल का उपयोग करना चाहिए। उपदेश का अंत
@implementation OblateSphereoid
void drawEggThunk (DrawingContext *context, Rect areaToDraw, void *userData)
{
BWOblateSphereoid *dealie = (BWOblateSphereoid *)userData;
dealie->_frognatz = [NSColor plaidColor];
// and more stuff.
} // drawEggThunk
...
@end // OblateSphereoid
मैं इस तरह से काम करता है (एक ही कक्षा में घोषित) के भीतर मेरी कक्षा का उदाहरण चर का उपयोग कर सकते: यहाँ बुराई है?
एक दिलचस्प सवाल होने के लिए उपरोक्त (हालांकि शायद बहुत बुरा अभ्यास) जिज्ञासा से बाहर, आप केवल अपनी कक्षा के भीतर से drawEggThunk को कॉल कर सकते हैं? –
मैं नहीं कर सकता, फ़ंक्शन एक सी सबसिस्टम से कॉल किया गया एक कॉलबैक फ़ंक्शन है, क्योंकि आप देख सकते हैं कि मैं कॉलबैक सेट होने पर स्वयं के संदर्भ को पास करने के लिए * userData का उपयोग करता हूं। – jlpiedrahita