Dan*_*ark 9 objective-c class-extensions
将类扩展放在他们自己的.h文件中是否有任何意义,并且#import它们有选择地为类的方法和属性获得不同级别的可见性?如果这是一个坏主意(或不起作用),为什么?
bbu*_*bum 15
这是一个很好的主意,也正是为什么要设计Class Extensions(以及为什么它们与类别不同).
即,你可以:
@interface Foo:NSObject
...public API here...
@property(readonly, copy) NSString *name;
@end
Run Code Online (Sandbox Code Playgroud)
@interface Foo()
@property(readwrite, copy) NSString *name;
@end
Run Code Online (Sandbox Code Playgroud)
#import "Foo.h"
#import "Foo_FrameworkOnly.h"
@interface Foo()
... truly implementation private gunk, including properties go here ...
@end
@implementation Foo
@synthesize name = name_;
@end
Run Code Online (Sandbox Code Playgroud)
并且有效地具有公开只读和私有读取的属性,仅用于导入Foo_FrameworkOnly.h的实现文件.