请解决这里在Objective C中保留NSString对象的数量

Vai*_*ran -2 memory-management copy objective-c retaincount

请解决这个问题.

NSString *S1 = @"abc";
//retain count of s1 ??

NSString *S2 = [S1 copy];
//retain count of s2 and s1 ??

NSString *S3 = [S2 copy];
//retain count of s3 and s2 ??

NSString *S4 = [S3 retain];
//retain count of s4 and s3 ??

NSString *S1 = @"xyz";
//retain count of s1, s2, s3 and s4 ??
Run Code Online (Sandbox Code Playgroud)

不建议retainCount因为我认为没有给出确切的结果.

bbu*_*bum 9

不建议使用retainCount,因为我认为这并不能给出确切的结果.

正确. retainCount没用.www.whentouseretaincount.com

您只能将保留计数作为增量进行有用的推理.


要回答您的问题,对于该代码,保留计数是一个常量,并且没有任何代码行实际上做了很多事情.在该代码的末尾,S2,S3和S4都将具有相同的值; 将指向相同的字符串(显然,S1将指向不同的字符串).

这是因为实现细节.您正在使用常量字符串.实际上,它是一个单身人士.因此,永远不需要复制字符串(copy只是这样return self;),并且retain/release/autorelease方法绝对没有.