2011-11-11 35 views
5

Yöntemlerimi, uygulamada #pragma işareti kullanarak gruplara yerleştiriyorum. Ancak bazen, yöntem uygulama kodu, bu yöntemi çağıran kodun altında görünür ve "Örnekleme yöntemi bulunamadı" uyarıları alıyorum. Özel yöntemler kullandığımda olur. Bunu nasıl düzeltebilirim?Özel yöntem için ileri bildirim nasıl yapılır?

cevap

8

En basit yöntem, bir anonim kategorisini kullanmaktır. senin @implementation önce, sizin .m dosyanın başına böyle bir şey ekleyin:

sizin Class.m uygulama dosyasında
@interface MyClass() 
- (void)myPrivateMethod; 
@end 
+0

+1 Benzer üç cevaptan sizinki en doğru olanıdır. –

1

Bu durumda, bu yöntemleri tanımlamak için uygulama dosyanızın içinde bir sınıf uzantısı kullanırsınız. Bu şekilde, 'public' API'niz hala başlık dosyanızda tanımlanmıştır ve uygulama dosyanız pseudo-private yöntemlerinin tanımını içerir.

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

Adlandırılmış bir kategori kullanmanın dezavantajı, karşılık gelen '@implementation MyClass (PrivateMethods)' seçeneğine sahip olmanızdır, aksi takdirde bir uyarı alırsınız. Sadece anonim bir kategori kullanın. – DarkDust

+0

Özel sınıf uzantısı için tercih edilen sözdizimi '@interface MyClass()' dır. –

1

, içeride özel fonksiyonlar başında bir arayüz bölüm ekleyin ve ilan edebilir:


@interface YourClassName (private) 

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

@end 

@implementation YourClassName 
... 
@end 

İlgili konular