如何在Objective-C中的Singleton类中实现“私有”方法

时间:2011-04-21 00:58:30

标签: objective-c singleton private

我在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')

如何在我的单件类中使用私有方法?

1 个答案:

答案 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

然后你可以像普通的

一样实现这个功能