How to implement a “private” method in Singleton class in Objective-C
我在Objective-C中有一个singleton myclass,在singleton中,假设我有一个方法
在foo中,我调用一个在myclass中实现的"private"方法
1 2 3 | -(void)foo { [self bar]; } |
因为我希望BAR是私有的(在Objective-C中尽可能私有),所以我的myclass.h文件中没有BAR的定义。这会在xcode中引起警告:
Method '-bar' not found (return type defaults to 'id')
如何在我的单例类中使用私有方法?
你应该使用"类别"。如下所述:http://macdevelopertips.com/objective-c/private-methods.html
基本上,您只需声明实现文件中的方法。类别可以用于其他事物,但这是一种非常简单的使用它们的方法。
我将从该站点上的示例代码中更改的唯一一件事是,它们在实现文件的顶部具有此代码:
1 2 3 4 | // ================================= // = Interface for hidden methods // ================================= @interface SomeClass (hidden) |
您应该将其更改为:
1 2 3 4 | // ================================= // = Interface for hidden methods // ================================= @interface SomeClass () |
这使得它成为一个"匿名类别"。您不需要命名它,因为您正在同一个文件中实现函数。
因此,如果要在类中声明私有方法-(void)栏,可以执行以下操作:
1 2 3 | @interface MyClass () -(void)bar; @end |
然后你可以像正常一样实现这个功能