TableView의 index를 조정하면서 NSNotFound라는 값을 넣어주는 것을 보게되었다. 왜 이런 것이 필요한지 알아본다.

핵심 정리

  • ObjectiveC에는 Optional이 없다.
  • 그렇기 때문에 배열 및 문자열에서 특정 index가 존재하지 않는다와 같은 상태를 나타내기 위한 값이 필요했던 것

NSNotFound

  • OS X v10.5 이전에는 0x7fffffff으로 할당된 값이었다.
  • 32비트 시스템에서는 NSIntegerMax와 같은 값이었다.
  • 그런데 64비트 시스템을 호환하기 위해서 이제는 아예 NSIntegerMax 값과 동일시 처리하였다.
  • 그말은 즉슨, 32, 64비트 환경에 따라 NSNotFound의 값이 달라진다는 말이다.
  • 그렇기 때문에 아카이브다 파일에 직접적으로 해당 값을 저장하면 안된다. (물리적)
    • 시스템 환경에 따라 값이 달라질 것이기 때문
    • 논리적으로 저장해놓지 않으면 서로 다른 시스템에서 다르게 해석할 요지가 존재
    • 하드 코딩은 역시 어디서나 좋지 않다.

Reference

profile
Goal, Plan, Execute.

0개의 댓글