我有一个
@property(retain) NSString* test;
它在实现文件中合成。
在dealloc中,这些都是正确的吗?
self.test = nil;
和
self.test = @"";
当我记录了nil和@“”的retainCount时,它分别输出为0和-1。
我只是想知道两者是否产生相同的结果。
提前致谢。
答案 0 :(得分:5)
首先,永远不要使用retainCount。它会欺骗你。其次,保留计数是无符号的,因此“-1”实际上意味着“可能的最高保留计数”,这意味着保留和释放对该对象不执行任何操作。第三,在nil上调用任何方法都会返回nil / 0。
现在已经清除了:nil和@“”不一样。 nil是指向地址0的指针,表示“无对象”。 @“”是一个完全有效的NSString对象,恰好没有任何字符。
答案 1 :(得分:2)
不,你应该总是将属性设置为nil,因为它释放了内存,而其他方式实际上是在创建一个零字符的字符串。
为了更好地理解,您可以阅读[this]:http://macdevelopertips.com/objective-c/objective-c-memory-management.html