创建一个只读公开,读/写为"私有"的属性的最佳方法是什么?我可以创建一个readonly方法并在.m文件中的无名扩展名中声明该属性,但最好我想保留点符号.
在您的公共接口中,声明属性只读ie
// Foo.h
@interface Foo
{
@private
Baz* bar;
}
@property (readonly, retain) Baz* bar;
@end
Run Code Online (Sandbox Code Playgroud)
在您的实现中,您可以声明类扩展,然后重新声明属性读/写:
// Foo.m
@interface Foo() // Note parentheses
@property (retain) Baz* bar;
@end
@implementation Foo
@synthesize bar;
@end
Run Code Online (Sandbox Code Playgroud)
上述意味着将创建setter和getter,但在包含标题的文件中,只有getter才会知道.缺点是setter确实存在,所以如果你忽略编译器警告并使用Foo.m之外的setter它仍然可以工作.
但是,仅仅声明一个只读属性并直接访问ivar的优点是你不必手动实现KVO,当然,内存管理是自动完成的.
| 归档时间: |
|
| 查看次数: |
370 次 |
| 最近记录: |