복사/붙여넣기를 지원하는 Swift 타입 작성하기 2

복사/붙여넣기를 지원하는 타입을 작성할 때, 해당 타입은 반드시 직렬화 및 역직렬화가 가능해야 했다. 그런데 NSPasteboardReading 프로토콜은 지정 이니셜라이저를 포함하고 있기 때문에 클래스를 직접 수정하거나 서브클래싱하지 않으면 이 방법을 적용할 수가 없다. 따라서 NSPasteboardItem을 대신 사용하는 방법을 적용해야 한다. 이 때 핵심은 해당 클래스가 어떤 모종의 방법을 사용해서 직렬화 및 역직렬화가 가능해야 한다는 점이다.

복사/붙여넣기를 지원하는 Swift 타입 작성하기 2 더보기

코코아 뷰 애니메이션 구현하기

코코아 애니메이션 가이드에서는 뷰를 Layer-Backed 뷰로 만든다음, 뷰의 레이어(CALayer)의 속성을 변경하면, CALayer에 의해서 암시적으로 해당 속성이 변경되는 동작이 애니메이팅된다고 한다. 하지만 실제로 이를 써보면 안된다. 그래서 조금 찾아보았더니 두 가지 문제가 있었다.

코코아 뷰 애니메이션 구현하기 더보기

NSPersistentStoreDescription

NSPersistentStoreDescription은 코어데이터의 영구저장소에 관한 여러 설정 정보들을 담고 있는 클래스이다. 이는 코어데이터 스택을 초기화하는 시점에 NSPersistentContainer나 NSPersistentStoreCoordinator에 의해서 사용된다. NSPersistentContainer를 사용하는 경우에는 디폴트 디스크립션이 자동으로 생성되기 때문에 만들 필요가 없긴한데, 저장소의 위치나 동작 방식을 커스터마징하기 위해 추가로 설정할 수 있다.

NSPersistentStoreDescription 더보기

코코아 앱 따라하기 – 3

지난 시간까지 macOS용 TTS앱을 간단하게 구현하고, 현재 상태에 따라 UI를 업데이트하도록 다듬고, 테이블 뷰를 사용하는 등의 기본적인 앱 구현에 관한 내용을 살펴보았다. 인터페이스 빌더와 코드 편집기를 오가며 앱을 만드는 방법에 있어서 macOS앱이나 iOS앱은 큰 차이가 없는 듯 보였다. 이번 시간에는 macOS용 앱을 만들 때만 사용 가능한 코코아 바인딩이라는 기술을 통해서 이 앱을 처음부터 새로 작성하는 과정을 살펴볼 것이다. 코코아 앱 따라하기 – 3 더보기

코코아 앱 따라하기 – 2

지난 글에서 만든 TTS 앱을 조금 개선해보자. 이 앱에는 Start, Stop 두 개의 버튼이 있다. 그런데 두 버튼은 모두 활성화된 상태가 된다. 따라서 앱이 텍스트를 읽고 있지 않은 경우에도 stop 버튼을 클릭할 수 있고, 또 앱이 텍스트를 읽고 있는 중간에 start 버튼을 반복적으로 클릭할 수 있게 된다.

이 상황을 멋지게 해결하기 위해서는 버튼의 활성화 상태를 그 때 그 때 바꿔주는 것이다. 즉 앱이 읽는 중간에는 start 버튼이 비활성화 되어야 하고, 앱이 읽고 있지 않을 때에는 반대로 stop 버튼이 비활성화 되는 것이다. 코코아 앱 따라하기 – 2 더보기