我正在尝试通过fileId比较两个文件。 fileId
是NSNumber
我感到惊讶的是,虽然file
和lFile
在内存中具有相同的位置,但是if语句没有返回true,并且在我使用isEqualToNumber
的比较为真之前,该方法没有返回true
为什么使用==
进行比较时,具有相同内存地址的两个项目不会返回true?
答案 0 :(得分:4)
仔细看。请注意,您没有比较file
和lfile
的地址,而是要比较各自fileId
属性返回的值。
如果fileId
属性返回基础NSNumber
对象的副本,则返回的两个值将不等于等于(==
)运算符,因为它们是两个不同的对象。但是,isEqualToNumber:
方法将它们视为相等。