覆盖用于分配,保留和复制的setter

时间:2013-12-19 09:31:38

标签: objective-c copy setter retain assign

我是Objective-C的新手,想要了解更多有关基于非弧的编程的信息,特别是要覆盖用于赋值,保留和复制的setter。请有人帮帮我。还请简要介绍一下这个过程。

1 个答案:

答案 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