为什么内存中同一位置的两个项在if语句中不返回true

时间:2012-10-01 21:14:06

标签: objective-c comparison

我正在尝试通过fileId比较两个文件。 fileIdNSNumber 我感到惊讶的是,虽然filelFile在内存中具有相同的位置,但是if语句没有返回true,并且在我使用isEqualToNumber的比较为真之前,该方法没有返回true

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

screenshot of comparison failing == comparison but being caught in isEqualToNumber comparison

1 个答案:

答案 0 :(得分:4)

仔细看。请注意,您没有比较filelfile的地址,而是要比较各自fileId属性返回的值。

如果fileId属性返回基础NSNumber对象的副本,则返回的两个值将不等于等于(==)运算符,因为它们是两个不同的对象。但是,isEqualToNumber:方法将它们视为相等。