Jas*_*ker 19 c# properties objective-c
有没有办法在Objective-C中创建像这个C#属性的属性?
public int prop { get; protected set;}
Run Code Online (Sandbox Code Playgroud)
从本质上讲,我希望能够从类外部获取值,但只能从类中设置值.
Bar*_*ark 24
完成此操作的最简单方法是将属性声明为readonly公共接口MyClass(即.h文件):
@property (readonly) NSInteger prop;
Run Code Online (Sandbox Code Playgroud)
然后,在该类的.m文件中,声明一个类扩展(具有空名称的类别).在类扩展中,您可以重新声明 @property以将其可写性更改为readwrite:
@interface MyClass ()
@property (readwrite) NSInteger prop;
@end
@implementation MyClass
@synthesize prop;
...
@end
Run Code Online (Sandbox Code Playgroud)
当然,Objective-C不会强制实施访问限制,因此没有什么可以阻止某些恶意代码调用-[MyClass setProp:].编译器会将此标记为警告,但这与Objective-C中的结果一样好.不幸的是,没有标准的方法将这个"受保护的"可写属性记录到子类; 你必须为你的团队制定一个约定,或者如果它在你要发布的框架中,就把它放在该类的公共文档中.
| 归档时间: |
|
| 查看次数: |
9629 次 |
| 最近记录: |