2012-11-26 2 views
0

방금 ​​버그를 발견했습니다. 버그를 추적 해보니, A (따라서 B)가 0 일 때 이것이 위반된다는 것을 알았습니다.A == B이면 [A isEqual : B]가 참임을 의미합니까?

나는 여기에 아무것도 놓치지 않고 있는지 확인하고 싶습니다.

질문에 대한 대답이 사실인가 아니면 예외가 있습니까?

답변

3

nil으로 보낸 메시지의 반환 코드는 항상 0이며, 이는 NO 또는 false와 같습니다. 그래서 당신이 관찰하는 행동은 정확히 직관적이지 않을지라도 예상되고 정확합니다. nil 개체가 제대로 일치하지 않습니다. nil에는 실제로 신원이 없습니다.

+0

감사합니다. 확인이 필요합니다. –

1

Objective-c에서 A가 nil 인 경우 [A isEqual : B]와 같은 메시지를 보낼 수 있습니다. 그러나 결과를 반환하는 무 객체를 기대할 수는 없습니다! 나는 아직 애플의 심판을 찾지 못했지만 반환 값이 정의되지 않았거나 nil/false/0 자체로 설정되어 있다고 의심된다.

+1

왜 투표가 늦습니까? –

+0

'nil'에 메시지를 보내면 값을 반환 할 수 있으며 https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocObjectsClasses.html#//apple_ref에 문서화되어 있습니다./doc/uid/TP30001163-CH11-SW7. (나는 downvote하지 않았다.) –

+0

@MartinR 나는 값이 리턴 될 것이라고 의심했지만 (내가 알고 있었어야 했음), 내가하려고했던 점은 목표 클래스의 어떤 로직도 실행될 수 없다는 것이다. –

관련 문제