0

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

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

NSString *myVar;

[myOutlet setStringValue:myVar];

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

myVar = @"hello";

一个指针被传递给 myOutlet 并且 NSTextField 指向与 myVar 相同的内存位置,本质上使它们相同。在本质上:

myVar == [myOutlet stringValue];

返回真。

然而

在这个情况下:

myVar = @"";

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

myVar == [myOutlet stringValue];

返回假。

谁能确认这是否属实,如果是,请解释原因?我相信这是我正在处理的一段代码中遇到的一个非常复杂问题的根源,我正试图围绕问题的根源展开思考。

谢谢!

4

1 回答 1

2

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

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

于 2012-05-23T02:28:38.043 回答