私はObjective-Cで知っています==
はisEqual:
とはまったく異なります。しかし、次のコードが32ビットと64ビットのiOSデバイスで一貫して異なる結果を生み出す理由が不思議です。32ビットと64ビットのiOSデバイスで==の動作が異なるのはなぜですか?
NSIndexPath* a = [NSIndexPath indexPathForItem:0 inSection:0];
NSIndexPath* b = [NSIndexPath indexPathForItem:0 inSection:0];
NSLog(@"%@", a == b ? @"YES" : @"NO");
NSLog(@"%@", [a isEqual:b] ? @"YES" : @"NO");
32ビットデバイスでは、 iPhone 5、==
は常に失敗します(予想されます)。
2016-12-07 09:55:18.019 NSIndexPathTestObjc[18667:1958831] NO
2016-12-07 09:55:18.020 NSIndexPathTestObjc[18667:1958831] YES
たとえば、64ビットデバイスでは、次のようになります。 iPhone 6s、==
が成功しました(予期しない)。私はObjective-Cの==に知っ
2016-12-07 09:56:05.503 NSIndexPathTestObjc[18780:1960472] YES
2016-12-07 09:56:05.505 NSIndexPathTestObjc[18780:1960472] YES
'a == b'を実行しているときは、オブジェクトではなくポインタを比較していません。あなたは2つのオブジェクトを作成しているので、一致してはいけません。 なぜ64でこれが真実であるか私にも面取り。 – rckoenes
@rckoenes Typo - あなたのコメントに余分な "not"があります。 – rmaddy