我有一个自定义对象,其中包含几个 NSString 对象、一些整数和一些布尔值。我正在使用 NSKeyedArchiver 将对象的副本存档到 NSData 对象中。
然后,用户对连接到 IB 接口的对象变量进行更改。
进行更改后,对象的新版本将归档到第二个 NSData 对象中。
这两个对象使用比较
[myNSData1 isEqualToData: myNSData2];
在大多数情况下,它工作得很好,但有一个非常令人不安的情况:
假设对象有一个变量初始化如下:
NSString *myString = @"";
在对象被归档到 myNSData1 之后,我们调用了以下代码:
myString = [myNSTextField stringValue];
将 myString 记录到控制台显示 myString 的值仍然是
@""
因此没有改变价值。
我们现在将对象归档到 myNSData2 中。
然而,在执行上面的比较语句后,它现在返回 FALSE。仅当使用 stringValue 将 @"" 的原始分配替换为包含在文本字段中的 @"" 时,它才返回 FALSE 。
为什么是这样?