我在執行中使用#pragma標記將我的方法安排到組中。但有時,方法實現代碼出現在調用此方法的代碼的下面,並且出現「實例方法未找到」警告。它發生在我使用私有方法時。如何解決這個問題?如何爲私有方法進行前向聲明?
5
A
回答
8
最簡單的方法是使用一個匿名類別。加入這樣的事情你.m
文件的頂部,您@implementation
前:
@interface MyClass()
- (void)myPrivateMethod;
@end
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
相關問題
- 1. 何時聲明方法爲私有
- 2. 如何聲明公共方法和私有方法在JavaScript
- 3. Ruby - 私有方法的內聯聲明
- 4. 聲明一個私有方法static
- 5. C++模板方法前向聲明
- 6. 向前聲明
- 7. 如何在TypeScript中聲明私有的抽象方法?
- 8. 向前聲明VS#進口繼承
- 9. OCaml前向聲明
- 10. 類向前聲明
- 11. 如何聲明一個私有整數?
- 12. 前向聲明的類成員的前向聲明
- 13. 如何痛飲省略向前聲明
- 14. 如何避免前向聲明錯誤?
- 15. 聲明前向聲明的類的成員函數爲朋友
- 16. 向前聲明錯誤,我有麻煩
- 17. 改變私有方法的行爲進行單元測試
- 18. 我是否必須爲類的所有私有方法聲明一個類別?
- 19. PHP OOP在子類中重新聲明私有方法/函數
- 20. 標記一個單例摘要並聲明私有的方法
- 21. Objective-C:我應該聲明私有方法嗎?
- 22. 聲明私有變量的簡短方法
- 23. 在cocoa中聲明私有變量的最佳方法
- 24. Maxscript函數前向聲明
- 25. 前向聲明和包括
- 26. 類的前向聲明
- 27. 前向聲明的缺點?
- 28. 向前聲明的類
- 29. C++前向聲明問題
- 30. 模板類向前聲明
+1在三個類似的答案中,你的答案是最正確的。 –