哪个是在Objective-C中为类定义私有方法的最佳方法?

时间:2011-11-17 02:06:02

标签: iphone objective-c

像:

@interface ClassXXName(private)
- (void)  xxxfunctions
@end

或用户类别方法?

1 个答案:

答案 0 :(得分:3)

@interface Foo()在接口Foo上创建了一个类扩展(我更正了,支持到bbum),就像添加到接口的其他方法一样。有些人也使用@interafce Foo(私有)(类别)而不是带()的类扩展。它更像是将新方法“注入”类外的类。

将它放在.m文件中只是让其他东西不会在.h文件中“看到它”,但就是这样。基本上人们通常在.m文件中使用类别或类扩展来指定私有接口,但它们也用于诸如UIKit使用类别向NSIndexPath添加行和节公共方法之类的东西。 (这可能令人困惑。)

你真的不需要以这种方式定义私有方法,但是如果你有一个名为bar的方法,在源文件中定义foo之前调用方法foo,你会得到一个编译器警告,例如“对象自身可能没有回应foo“。你可以在定义bar或任何其他foo调用代码之前通过定义foo来摆脱它。它与普通的C和函数一样。

就像Ole所说,这并没有阻止任何人调用私有方法,它只是声明你的意图是私有的,并导致编译器生成“可能不响应”警告,即使它们导入.h文件。