2011-11-11 21 views
5

मैं कार्यान्वयन में #pragma चिह्न का उपयोग कर समूहों में अपने तरीकों की व्यवस्था कर रहा हूं। लेकिन कभी-कभी, विधि कार्यान्वयन कोड कोड के नीचे दिखाई देता है जो इस विधि को कॉल करता है, और मुझे "इंस्टेंस विधि नहीं मिली" चेतावनियां मिल रही हैं। ऐसा तब होता है जब मैं निजी तरीकों का उपयोग कर रहा हूं। इसे कैसे ठीक करें?निजी विधि के लिए आगे की घोषणा कैसे करें?

उत्तर

8

सरलतम विधि एक गुमनाम श्रेणी का प्रयोग है। कुछ इस तरह अपने .m फ़ाइल के शीर्ष में जोड़े, अपने @implementation से पहले:

@interface MyClass() 
- (void)myPrivateMethod; 
@end 
+0

+1 तीन समान उत्तरों में से, आपका सबसे सही है। –

1

इस मामले में, आप इन विधियों को परिभाषित करने के लिए अपनी कार्यान्वयन फ़ाइल के अंदर एक कक्षा विस्तार का उपयोग करेंगे। इस तरह, आपकी 'सार्वजनिक' एपीआई अभी भी आपकी हेडर फ़ाइल में परिभाषित है, और आपकी कार्यान्वयन फ़ाइल में आपके छद्म-निजी तरीकों की परिभाषा शामिल है।

YourClass.m

@interface MyClass() 

- (void)myPrivateMethod; 

@end 


@implementation MyClass 

- (void)myPublicMethod 
{ 
    // This will not throw an error or warning 
    [self myPrivateMethod]; 
} 

- (void)myPrivateMethod 
{ 
    // Do something 
} 

@end 
+2

नामित श्रेणी का उपयोग करने का नुकसान यह है कि आपको संबंधित '@ कार्यान्वयन MyClass (PrivateMethods)' की आवश्यकता है, अन्यथा आपको चेतावनी मिलेगी। बस एक अनाम श्रेणी का उपयोग करें। – DarkDust

+0

निजी वर्ग एक्सटेंशन के लिए पसंदीदा वाक्यविन्यास '@interface MyClass() 'है। –

1

अपने Class.m कार्यान्वयन फ़ाइल में, तुम वहाँ में शुरुआत में एक अंतरफलक अनुभाग जोड़ सकते हैं और घोषणा कर सकते हैं निजी कार्यों:


@interface YourClassName (private) 

-(void)aPrivateMethod:(NSString*)aParameter; 
... 

@end 

@implementation YourClassName 
... 
@end 

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