NSNumber *x = [NSNumber numberWithBool:NO];
NSNumber *y = [NSNumber numberWithUnsignedInt:0];
assert([x isEqual:y]);
assert(x==y);
첫 번째 어설 션이 통과되고 두 번째 어설 션이 실패합니다. 이유가 무엇입니까? 그들의 'objCType'이 다르기 때문에? isEqual :와 == 연산자의 정의 사이의 차이점은 무엇입니까?NSNumber : NO == 0?
왜 내가이 작업을 수행해야합니까? API가 BOOL 대신 NSNumber를 필요로하는 일부 백엔드에 부울 값을 저장해야하므로 BOOL을 저장하기 전에 모든 BOOL을 NSNumber로 변환해야합니다. 그 반대도 마찬가지입니다.
'x'와'y'가'[NSNumber numberWithBool : NO]'이면 더 분명 해졌을 것입니다.'==' –