【发布时间】:2013-12-19 09:31:38
【问题描述】:
我是 Objective-C 的新手,想了解更多关于非基于弧的编程,尤其是覆盖赋值、保留和复制的设置器。有人可以帮帮我吗。并请简述过程。
【问题讨论】:
标签: objective-c copy setter retain assign
我是 Objective-C 的新手,想了解更多关于非基于弧的编程,尤其是覆盖赋值、保留和复制的设置器。有人可以帮帮我吗。并请简述过程。
【问题讨论】:
标签: objective-c copy setter retain assign
以下是每个的简要说明:
assign 是默认值,只是执行变量赋值。它不声明所有权,因此如果没有其他人通过保留或其他方式声明所有权,则该属性指针指向的对象可能随时消失。
- (void) setAssignProperty:(id)newValue
{
self->assignProperty = newValue;
}
retain 指定应发送新值 - 在分配时保留并发送旧值释放。保留也被称为强大。方法retain增加对象的retainCount(直到retainCount为0时才会释放对象)。
-(void)setRetainProperty:(id)newValue
{
if (retainProperty != newvalue)
{
[retainProperty release];
retainProperty = [newValue retain];
}
}
copy 指定应发送新值 - 分配时复制并发送旧值释放。复制创建对象的一个新实例。
-(void)setCopyProperty:(id)newValue
{
if (copyProperty != newvalue)
{
[copyProperty release];
copyProperty = [newValue copy];
}
}
我还想指出,几乎没有理由不使用 arc。
【讨论】: