是@""和零相同吗?

Aar*_*ron 0 properties objective-c nsstring

我有一个

@property(retain) NSString* test;
Run Code Online (Sandbox Code Playgroud)

它在实现文件中合成.

在dealloc中,这两个都是正确的吗?

self.test = nil;
Run Code Online (Sandbox Code Playgroud)

self.test = @"";
Run Code Online (Sandbox Code Playgroud)

当我记录了retainCount为nil和@""时,它分别给出输出为0和-1.

我只是想知道两者是否产生相同的结果.

提前致谢.

Cat*_*Man 5

首先,永远不要使用retainCount.它会欺骗你.其次,保留计数是无符号的,因此"-1"实际上意味着"可能的最高保留计数",这意味着保留和释放对该对象不执行任何操作.第三,在nil上调用任何方法都返回nil/0.

现在已经清除了:nil和@""不一样.nil是指向地址0的指针,表示"无对象".@""是一个完全有效的NSString对象,恰好没有任何字符.