Yev*_*niy 22 visibility objective-c instance-variables
是否有理由申报私人伊娃@interface而不是@implementation?
我在整个互联网上看到这样的代码(包括Apple提供的文档):
foo.h中
@interface Foo : NSObject {
@private
id _foo;
}
@end
Run Code Online (Sandbox Code Playgroud)
Foo.m
@implementation Foo
// do something with _foo
@end
Run Code Online (Sandbox Code Playgroud)
头文件定义了一个类的公共接口,而一个私有的ivar是...... well ... private.那么为什么不这样声明呢?
foo.h中
@interface Foo : NSObject
@end
Run Code Online (Sandbox Code Playgroud)
Foo.m
@implementation Foo {
@private
id _foo;
}
// do something with _foo
@end
Run Code Online (Sandbox Code Playgroud)
CRD*_*CRD 24
声明实例变量@implementation是Obj-C的最新功能,这就是为什么你会看到很多带有它们的代码@interface- 没有别的选择.
如果您正在使用支持在实现中声明实例变量的编译器来声明它们,则可能存在最佳默认值 - 只有在需要其他人访问时才将它们放在接口中.
编辑:附加信息
在实现声明实例变量隐隐藏(有效私营)和能见度不能被改变- @public,@protected而@private没有(至少目前锵)产生编译器错误,但被忽略.
| 归档时间: |
|
| 查看次数: |
5114 次 |
| 最近记录: |