假设我的课上有以下公共方法:
- (BOOL)finished
{
return _finished;
}
- (void)setFinished:(BOOL)aValue
{
_finished = aValue;
}
Run Code Online (Sandbox Code Playgroud)
我是否还需要在课程中将finish设置为属性:
@property SomeClass *finished;
Run Code Online (Sandbox Code Playgroud)
我可能误会了@property,但对我而言,似乎我在重复自己.
@property或只是其中一种?通过声明a @property,LLVM编译器将自动"合成"您的访问器方法(getter和setter),以及一个实例变量(ivar),由下划线前缀表示(_finished例如)
在你的情况下,因为你没有对你的访问者做任何特殊的事情(你只是直接阅读/写入支持ivar),只需声明一个@property会做的伎俩.您不需要编写-finished和-setFinished方法
如果你没有申报@property,你必须申报ivar
@property还表示您正在使用对象的成员变量,并且正如用户@Sulthan在注释中所说,每个类都包含@properties可以搜索的列表
同一个用户的另一个好处是@property制作访问器方法atomic,以防止ivar在编写时被读取
| 归档时间: |
|
| 查看次数: |
337 次 |
| 最近记录: |