코코아바인딩 :: 컨트롤러의 컨텐츠 제공방법

컨트롤러 컨텐츠를 제공하기 컨트롤러들은 (당연히도) 관리할 컨텐츠가 필요하며, 컨텐츠를 지정하는 방법에는 여러가지가 있다. 바인딩을 생성하는 코드를 통해서도 가능하며, IB를 통해서도 설정할 수 있다. 컨트롤러 컨텐츠 설정하기 NSObjectController와 그 서브클래스들은 -initWithContent:를 통해서 초기화되며, 만약 컨텐츠 바인딩을 의도한다면 nil을 넘겨도 된다. 혹은 명시적으로 setContent:를 통해서 지정해줄 수도 있다. 보통은 컨트롤러의 컨텐츠 바인딩을 통해서 연결하는 것이 일반적이다.

코코아 바인딩이 동작하는 방식

바인딩이 동작하는 방식 키밸류 바인딩으로 바인딩이 만들어지는 방식 언바인딩 NSEditor, NSEditorRegistration 프로토콜 KVC / KVO 여러 기술들이 조화되는 방식 코코아 바인딩을 지원하는 기술들 코코아 바인딩은 KVC와 KVO를 기반으로 동작하며, 동시에 NSEditor, NSEditorRegistration 프로토콜을 이용한다. 이런 것들이 어떻게 돌아가는지를 이해하기 위해서 그래픽 소프트웨어를 하나 상상해보도록 하자. 이 앱은 사용자가 사각형이나 원 같은 그래픽 오브젝트를 그릴 수 있는데, 각각의 그래픽 오브젝트는 그림자와 같은 프로퍼티를 갖는다. 그림저는 각도나 오프셋같은 속성값을 또 가지고 있다. 인스펙터에서는 선택된 객체의 그림자 위치나 각도의 정보가 표시된다. 이 인스펙터의

NSArrayController explained

배열 컨트롤러 배열 컨트롤러는 일련의 객체 집합을 다루는 바인딩 호환 객체이다. 여기서 ‘집합’은 주로 NSArray인데, 코어데이터 등에서는 NSSet을 쓰기도 한다. 배열 컨트롤러는 배열이 아니고 별도의 배열을 관리한다. 이는 배열을 자동으로 재정렬하거나, 선택된 객체들을 기억하거나 하는 배열 자체에 저장될 수 없는 몇 가지 메타 정보를 가지고 배열을 다루는 것을 도와준다. 배열 컨트롤러는 NSObjectController의 서브클래스로, 다음 메소드를 통해서 초기화할 수 있다. – (instancetype)initWithContent:(id)content 다시 NSObjectController는 NSController의 자손인데, 이 컨트롤러는 객체의 편집 과정에 따른 이벤트를 발생시키는 기능을 갖고 있다. -objectDidBeginEditing: -objectDidEndEditing: -commitEditing -commitEditingWithDelegate:didCommitSelector:contextInfo:

코코아 바인딩이란

코코아 바인딩 기능적인 측면에서 가장 단순하게 설명하면, 코코아 바인딩은 모델과 뷰 사이에 어떠한 글루코드 없이 값과 디스플레이되는 것을 동기화시키는 것이다. 즉 바인딩을 구성하면 값이 바뀔 대 별도의 처리 없이 자동으로 뷰가 업데이트되고, 뷰에서 변경이 일어나면 즉시 값이 변경되는 것을 코드 없이 구현한다는 것이다. 즉 작성/유지해야 하는 코드의 양을 최소화하면서 이러한 기능을 제공한다. 코코아 바인딩을 적용하기 위해서 기존 코드를 재작성할 필요도 없다.

[Cocoa] 코코아 바인딩을 활용한 주소록 앱 만들기

바인딩으로 주소록 만들기 코코아 바인딩을 활용하면 엄청나게 많은 양의 코드를 줄일 수 있다는 것은 많이 알려져 있다. 바인딩을 활용하는 가장 흔한 예는 슬라이더와 텍스트필드를 창에 올려두고 모델 객체의 값과 연결하여 숫자값이나 슬라이더 조작이 어떻게 맞물려 돌아가는지를 살펴보는 예인데, 오늘은 조금더 발전한 형태의 예를 만들어 보도록 하겠다. 예를 들면 주소록 같은 거 말이다.