2011-11-11 60 views
5

我在執行中使用#pragma標記將我的方法安排到組中。但有時,方法實現代碼出現在調用此方法的代碼的下面,並且出現「實例方法未找到」警告。它發生在我使用私有方法時。如何解決這個問題?如何爲私有方法進行前向聲明?

回答

8

最簡單的方法是使用一個匿名類別。加入這樣的事情你.m文件的頂部,您@implementation前:

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

+1在三個類似的答案中,你的答案是最正確的。 –

1

在這種情況下,您可以在實現文件中使用類擴展來定義這些方法。以這種方式,您的'公共'API仍然在您的頭文件中定義,並且您的實現文件包含您的僞私有方法的定義。

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

使用命名類別的缺點是您需要相應的'@implementation MyClass(PrivateMethods)',否則您會收到警告。只需使用匿名類別。 – DarkDust

+0

私有類擴展的首選語法是'@interface MyClass()'。 –

1

在你Class.m實現文件,你可以在那裏開始處添加一個接口部分,並聲明私有函數:


@interface YourClassName (private) 

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

@end 

@implementation YourClassName 
... 
@end