什么是objective-c中私有方法的最佳实践方法。那是一个只会被类用作辅助方法的方法。
特别是我不清楚的是:
- 是否需要将头文件中指定的方法完全设为私有?即为什么不把它放在头文件之外,和
- 如果您可以将其排除在头文件之外,那么拥有私有方法有什么意义呢?
- 还是在objective-c中没有真正的私有方法这样的情况,在这种情况下,最好只指定头文件中的所有内容而根本不用标记私有方法?
谢谢
什么是objective-c中私有方法的最佳实践方法。那是一个只会被类用作辅助方法的方法。
特别是我不清楚的是:
谢谢
无需在公共头文件中指定方法。如果模块中的类应该是“朋友”,您可能需要一个“私有”头文件供模块中的其他类使用。您甚至可以拥有一个“受保护”的头文件,例如 Apple 所做UIGestureRecognizerSubclass.h
的那样。但是,这一切都只是约定,语言本身不支持任何内容。
Objective-C 中的私有方法只是没有公开记录的方法。任何方法仍然可以从任何地方调用,只要调用者知道它的名称以便创建适当的选择器。不公开记录方法的优点是您可以自由更改或删除它,而不必担心向后兼容性。将它们排除在头文件之外是一种不公开记录它们的方法。
您可能想要使用的是“类扩展”。它们看起来相似,但不应与类别混淆。这将允许您在 .m 文件中声明私有方法,并且您将获得所有不错的 IDE 更正和建议。
最佳实践(甚至是要检查的编译器选项)是所有方法都以一种或另一种方式声明。要从窥探中“隐藏”辅助方法,请在实现 .m 文件中声明它,如下所示:
#import Client;
@interface myClass (Private)
- (void) privateMethod;
- (float) bankAccountBalanceForClient:(Client *)client;
@end
@implementation myClass
- (void) privateMethod;
{
//foo here
}
等等。私有方法是 myClass 方法中称为 Private 的类别。这个类别可以在任何地方声明,甚至在称为私有方法的主 .h 文件中,尽管那将是维护的噩梦。
因此,使用 public .h 文件作为公共方法,使用 .m 文件来声明私有方法,您可以在某处声明所有方法。我使用此编译器选项来确保并强制它,以便实际使用的任何方法都在某处声明(或者我收到语法错误),因此我不会因为找不到方法而导致任何运行时崩溃。