2

我正在尝试按 fileId 比较两个文件。 fileId是一个NSNumber
令我惊讶的是,虽然filelFile在内存中具有相同的位置,但 if 语句没有返回 true,并且在我的比较 using 为 true 之前,该方法没有返回isEqualToNumbertrue。

为什么具有相同内存地址的两个项目==在比较时不会返回 true?

比较失败 == 比较但陷入 isEqualToNumber 比较的屏幕截图

4

1 回答 1

4

仔细地看。请注意,您不是在比较 和 的地址filelfile而是在比较它们各自fileId属性返回的值。

如果该fileId属性返回底层对象的副本NSNumber,则返回的两个值不会与相等 ( ==) 运算符比较相等,因为它们是两个不同的对象。但是,它们将被该isEqualToNumber:方法视为相等。

于 2012-10-01T21:32:03.983 回答