setStringValue和指针

时间:2012-05-23 02:22:38

标签: xcode cocoa nstextfield

我对setStringValue有一个独特的情况:希望有人可以解决这个问题:

使用以下理论示例(非文字)代码:

NSString *myVar;

[myOutlet setStringValue:myVar];

对于任何字符串值,例如:

myVar = @"hello";

指针传递给myOutlet,NSTextField指向与myVar相同的内存位置,基本上使它们相同。实质上:

myVar == [myOutlet stringValue];

返回TRUE。

无论其

在这种情况下:

myVar = @"";

好像它没有传递指针,而是NSTextField正在创建它自己的独立内存位置来存储它的空字符串,基本上是:

myVar == [myOutlet stringValue];

返回FALSE。

任何人都可以确认这是否属实,如果是,请解释原因?我相信这是我正在处理的一段代码中遇到的一个非常复杂的问题的根源,我正试图围绕问题的根源进行思考。

谢谢!

1 个答案:

答案 0 :(得分:2)

基本上,第一种情况很有可能。这些指针绝对不能保证相等,如果你需要比较字符串,请始终使用-isEqualToString:

您遇到的可能是某种优化,以避免多次存储@"hello"。我们无法知道这种情况何时发生或不会发生,并且可能在将来或从设备到设备发生变化。