我有这个结构:
@interface MyList : NSObject { NSString* operation; NSString* link; } @property (readwrite) NSString* operation; @property (readwrite, assign) NSString* link; @end @implementation MyList @synthesize operation,link; @end
我知道如果我保留而不是readwrite,我应该释放操作和链接属性。
但是我应该发布操作并链接上面的代码吗?
答案 0 :(得分:3)
没有。您没有New,Alloc,Retain或Copy值,因此您不会(自动)释放它们。
答案 1 :(得分:3)
默认值为readwrite,assign和atomic。因此,通过在第一个示例中不指定assign,retain或copy,您实际上默认使用assign。这就是您不会随后使用版本的原因。 Assign不会增加对象的保留计数。请注意,对于诸如字符串之类的对象,您几乎不会想要使用assign,因为您没有拥有该对象,并且它可能会被释放。因此,对于要使用的对象,请保留或复制。您只能在浮点数,NSIntegers,BOOL等标量类型上使用assign。另请注意,如果您不使用垃圾收集,则在未指定assign,retain或copy时会收到编译器警告。