如果我有课
@interface Foo {
NSString *temp;
}
@property(nonatomic, copy) NSString *temp;
@end
据我所知,在分配时,旧的temp将被释放,新的temp将使用temp = [newTemp copy]
分配。按照内存管理规则,你应该在Foo的dealloc方法中做[temp release]
,对吧?
我不明白如果从未使用过setter会发生什么 - 你仍然在dealloc中有[temp release]
,所以它会释放一些保留计数为0.有人可以为我澄清一下吗?
答案 0 :(得分:3)
有两种可能性。
由于您从未设置它,因此它是nil
。将release
发送到nil
就可以了。所以没问题。
您的init
例程为temp
设置了默认值。然后它是一个真实的对象,发送它release
也没关系。
周围没问题!在这两种情况下,您都不会向保留计数为0的对象发送消息。