具有assign和readwrite objective-c的dealloc属性

时间:2010-05-20 20:41:09

标签: objective-c memory-management

我有这个结构:

@interface MyList : NSObject {
    NSString* operation;
    NSString* link;
}

@property (readwrite) NSString* operation;
@property (readwrite, assign) NSString* link;

@end


@implementation MyList
@synthesize operation,link;
@end

我知道如果我保留而不是readwrite,我应该释放操作和链接属性。

但是我应该发布操作并链接上面的代码吗?

2 个答案:

答案 0 :(得分:3)

没有。您没有New,Alloc,Retain或Copy值,因此您不会(自动)释放它们。

答案 1 :(得分:3)

默认值为readwrite,assign和atomic。因此,通过在第一个示例中不指定assign,retain或copy,您实际上默认使用assign。这就是您不会随后使用版本的原因。 Assign不会增加对象的保留计数。请注意,对于诸如字符串之类的对象,您几乎不会想要使用assign,因为您没有拥有该对象,并且它可能会被释放。因此,对于要使用的对象,请保留或复制。您只能在浮点数,NSIntegers,BOOL等标量类型上使用assign。另请注意,如果您不使用垃圾收集,则在未指定assign,retain或copy时会收到编译器警告。