我是Objective-C的新手,想要了解更多有关基于非弧的编程的信息,特别是要覆盖用于赋值,保留和复制的setter。请有人帮帮我。还请简要介绍一下这个过程。
答案 0 :(得分:3)
以下是各自的简要说明:
assign 是默认值,只是执行变量赋值。它没有声明所有权,因此如果没有其他人通过保留或其他方式自行声明所有权,则属性指针指向的对象可能随时消失。
- (void) setAssignProperty:(id)newValue
{
self->assignProperty = newValue;
}
保留指定应在发送时发送新值-retain并发送旧值。保留也被认为是强大的。方法保留增加对象的retainCount(在retainCount为0之前,对象不会被释放)。
-(void)setRetainProperty:(id)newValue
{
if (retainProperty != newvalue)
{
[retainProperty release];
retainProperty = [newValue retain];
}
}
copy 指定应在分配时发送新值-copy并发送旧值。复制创建对象的新实例。
-(void)setCopyProperty:(id)newValue
{
if (copyProperty != newvalue)
{
[copyProperty release];
copyProperty = [newValue copy];
}
}
我还想指出,几乎没有理由不使用 arc 。