我在Objective-C中有一个单独的MyClass。在单例中,假设我有一个方法-(void)foo
,其他类使用[[MyClass sharedManager] foo]
消息。
在foo中,我调用MyClass中实现的“私有”方法-(void)bar
。所以像这样:
-(void)foo {
[self bar];
}
由于我希望bar是私有的(在Objective-C中尽可能私有),我的MyClass.h文件中没有bar的定义。这会在XCode中引发警告:
找不到方法'-bar'(返回类型默认为'id')
如何在我的单件类中使用私有方法?
答案 0 :(得分:3)
您应该使用“类别”。这里描述: http://macdevelopertips.com/objective-c/private-methods.html
基本上你只是在实现文件中声明方法。类别可以用于其他事情,但这是一种非常简单的使用方式。
我唯一想从该网站上的示例代码更改的是,它们在实现文件的顶部有这个:
// =================================
// = Interface for hidden methods
// =================================
@interface SomeClass (hidden)
您应将其更改为:
// =================================
// = Interface for hidden methods
// =================================
@interface SomeClass ()
这使它成为“匿名类别”。您无需为其命名,因为您正在同一文件中实现这些功能。
因此,如果您想在类中声明一个私有方法 - (void)栏,您可以这样做:
@interface MyClass ()
-(void)bar;
@end
然后你可以像普通的
一样实现这个功能