Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iPhone上初始化NSString的最佳实践_Iphone_Xcode_Debugging_Nsstring_Analyzer - Fatal编程技术网

在iPhone上初始化NSString的最佳实践

在iPhone上初始化NSString的最佳实践,iphone,xcode,debugging,nsstring,analyzer,Iphone,Xcode,Debugging,Nsstring,Analyzer,xCode的“构建和分析”抱怨“s”可能是垃圾 哪一个是更好的解决方案?A、 B,还是C NSString *s; // A NSString *s = nil; // B NSString *s = @""; // C if(x == 1) s = @"you picked 1"; if(x == 2) s = @"you picked 2"; if(x == 3) s = @"you picked 3"; 我总是和你一起去 NSStr

xCode的“构建和分析”抱怨“s”可能是垃圾

哪一个是更好的解决方案?A、 B,还是C

NSString *s;              // A
NSString *s = nil;        // B
NSString *s = @"";        // C

if(x == 1) s = @"you picked 1";
if(x == 2) s = @"you picked 2";
if(x == 3) s = @"you picked 3";
我总是和你一起去

NSString *s = nil;

作为默认的初始化值。它比空字符串更合理(空字符串是一个“东西”,而
nil
是一个未知值),而且由于您可以在Objective-C中传递
nil
,如果我忘记给它一个“真实”值,它(通常)不会引起大问题。

nil不是未知的,它定义得非常好。另一方面,空字符串也(可能)分配内存。nil是一种方法。我的意思是说,
nil
表示一个未知值,而空字符串是一个已知值。当像
NSString*s一样初始化它时,
s
的“值”是什么?它会是
nil
,就像没有手动赋值的IVAR一样,还是会是其他东西?它将是垃圾。在Obj-C中,实例变量被自动初始化为
nil
,但本地变量指向的内存区域可能没有有意义的值。听起来像是“将其设置为nil”。这是否也适用于以上述相同方式使用的NSMutableString?