我在看一些代码:
@interface ClassName (Private)
- (float)methodOne:(NSDictionary *)argOne;
- (void)methodTwo:(NSDictionary *)argTwo;
@end
@implementation ClassName
....
Run Code Online (Sandbox Code Playgroud)
上面的代码位于ClassName.m文件的顶部,该文件似乎将该类的其他接口方法定义为private?
为什么这样?有什么意义?还有什么可以去哪里(私人)?有人有这方面的文件吗?
谢谢
And*_*sen 16
这是一种保持类在内部使用的方法不会暴露给其他人的方法.这是封装的一部分.在Objective-C 2.0(iOS和Mac OS X 10.5+)中,在实现文件的顶部使用类扩展更为常见:
@interface ClassName ()
- (void)privateMethod;
@end
Run Code Online (Sandbox Code Playgroud)
类扩展实际上只是一个类别的特例(这是你所问的).主要区别在于,对于某个类别,即使您的@implementation不包含该类别中声明的方法的定义,编译器也不会抱怨.对于类扩展中的方法,您的类必须在其主@implementation块中实现这些方法,否则您将收到编译器警告.
你最好在iOS代码中使用类扩展,或者至少使用Mac OS X 10.5 Leopard的Mac代码.
归档时间: |
|
查看次数: |
10683 次 |
最近记录: |