2013년 12월 14일 토요일

7장(키-벨류 코딩, 키-벨류 옵저빙)

7장을 보고 난 다음 든 생각은 "이런 것도 모르면서 iPhone 개발을 하려고 생각했었나?" 이다. stackoverflow 에서 "OSX 개발자는 대부분 이 책에서부터 시작했다"는 말이 맞을 정도로 interface builder를 사용하면서 가장 궁금한 부분을 알려 준다.

interface builder를 거의 사용하지 않았지만, 한 번씩 사용하면서 안타까웠던 게 "내가 생성한 변수를 여러 가지 UI component와 어떻게 연결 못 시키는가?" 였었다. 그런데 7장에서 이것을 알려 준다.

처음 키-벨류 코딩, 키-벨류 옵저빙이라고 해서 sqlite 인가했었는데, 말 그대로 변수에 바인드를 걸고, 특정 UI Component를 바인드된 변수에 옵저버로 등록하는 것이다. 이렇게 하려면 키-벨류 코딩이 필요하다.

그리고 setter와 getter를 쉽게 사용할 수 있게 만드는 프로퍼티에 대해서 설명하고 있다. 프로퍼티의 속성은 다른 책에서도 설명되어 있지만, 보기 좋게 정리되어 있어서 옮겨 본다.


  • assign : 단순히 대입만 한다. 포인터가 아닌 스칼라형(정수형이나 실수형)에 사용
  • strong : 말 그대로 strong 하게 연관 관계를 맺는 것이다. strong으로 엮여 있는 것은 메모리에서 해제되는 것이 방지됨
  • weak : strong의 반대. 메모리에서 해제되면 자동으로 nil 값으로 설정됨
  • copy : 프로퍼티 대상이 문자열일 때나 뮤터블 서브클래스를 이용하는 클래스를 사용할 때 주로 이용
  • nonatomic : getter, setter에 lock을 걸지 않음(스레드로 돌지 않을 때)
  • atomic : getter, setter에 lock을 걸 때(스레드로 돌 때 접근 경쟁을 막기 위해서)
  • readwrite : 기본값으로 설정되는 것. 프로퍼티가 read, write 모두 가능
  • readonly : 프로퍼티가 read만 가능하게 만들 때(setter가 무시됨)

noatomic, atomic은 스레드 프로그램에서 필수인데, 프로퍼티의 속성으로 쉽게 처리 가능할 수 있게 만든 게 눈에 띈다.

마지막으로 키 경로(Key Paths) 에 대해서 설명하고 있는데, 이건 기억해 두면 추후 코딩량을 많이 줄이게 될 것으로 예상한다.

8장으로 넘어가 보도록 하자. 짧게 챕터가 구성되어 있으니 짬짬이 시간을 내 보는 처지에서 아주 좋다.

댓글 없음:

댓글 쓰기