2017년 2월 8일 수요일

CALayer - CATextLayer

CATextLayer 는 그 이름처럼 화면에 글자를 그리기 위한 용도의 CALayer 기반 레이어 클래스이다. UILabel 이나 NSTextField 등에 비해 기능적인 면에서 부실하기는 하지만 아무래도 퍼포먼스 면에서는 우위일 것이다.

2017년 2월 7일 화요일

CALayer 시작하기

지금까지 iOS 및 macOS 용 앱을 여럿 만들어 왔지만 레이어에 대해서는 자세히 공부해 본 적이 없었다. 블로그에 글 쓸 주제도 적어지고 마침 필요도 하기에 레이어에 대해 공부해 보면서 알게 된 것들을 정리해 보려고 한다.

2017년 2월 1일 수요일

NSScrollView Cheatsheet

개인적으로 NSScrollView 를 이용하면서 알게된 팁을 모아본 글이다. 이 글은 계속 업데이트 될 수 있다.

2017년 1월 20일 금요일

Swift 속의 C Pointer 이야기 - 기타 도구들

이 글은 포인터에 관련이 있거나 간접적인 접근 방법에 대한 글이다.

Swift 속의 C Pointer 이야기 - UnsafeBufferPointer, UnsafeMutableBufferPointer

버퍼(Buffer)라는 용어는 대체로 연속적인 메모리 공간을 의미한다. 메모리를 할당해서 구한 포인터는 이 버퍼의 시작 주소를 담고 있다고 볼 수 있다. 버퍼는 메모리 덩어리 그 자체다.

하지만 스위프트(Swift)는 포인터를 쓸 수 있는 언어가 아니기 때문에 연속적인 메모리를 액세스 하는 것이 불가능하다. 그래서 위의 버퍼 개념이 맞지 않는다.

Swift 에서는 버퍼를 대체하기 위해 배열(Array)을 대신 사용한다. 랜덤 액세스도 되고 이터레이션도 되는 그 배열 말이다.

UnsafeBufferPointer 와 UnsafeMutableBufferPointer 는 이런 Swift 버퍼와 C 버퍼 사이의 상호호환을 위해 제공되는 특수한 컨테이너다.

Swift 속의 C Pointer 이야기 - UnsafeRawPointer, UnsafeMutableRawPointer

이번 이야기는 Raw Pointer 대충 번역하면 생포인터에 대한 이야기다. 쉽게 표현하자면 이 생포인터는 타입이 지정되지 않은(Untyped) 포인터이다. 포인터 시작편에서 언급했지만 이 생포인터는 타입이 명시되지 않았다는 점 때문에 Swift 에서 배척(?)받을 지도 모르는 존재일지도 모르겠다. (뇌내망상)

이 생짜포인터를 액세스 하기 위해 Swift 에서는 UnsafeRawPointer 와 UnsafeMutableRawPointer 등의 컨테이너를 제공한다.

Swift 속의 C Pointer 이야기 - UnsafePointer, UnsafeMutablePointer

UnsafeMutablePointer 는 지정된 타입의 포인터를 다루는 가장 일반적인 컨테이너이다. Mutable 이라는 이름에서 유추가 가능하겠지만, 이 포인터 컨테이너는 포인터가 가리키는 메모리를 조작(?)할 수 있는 녀석이다.

Swift 속의 C Pointer 이야기 - 시작

Swift 에서 C 포인터(Pointer)는 왜 쓰는가. 모호할 때도 있고 쓰기도 귀찮고 문제도 자주 일으키는 그 개념을 말이다.

그런데 답은 C 포인터 라는 이름에서 이미 나와있다. 당연히 C로 구현된 함수가 포인터를 사용하게 되니 이 함수를 쓰려면 포인터를 다뤄야 한다는 것이다.

C 가 점점 대중(?)들에게 잊혀져 가는 현재로썬 포인터는 거의 쓸 일이 없어졌다고 볼 수도 있다. 하지만 동일개념을 사용하는 C++도 아직 현역이고 암호화 등 바이너리 연산 계통에선 여전히 C가 현역이다. 거기에 포인터도 거의 따라나니다 보니 아직은 땔 수 없는 애증(?)의 관계인 것 같다.

이번 글은 예전에 썼던 포인터 글이 오래된 것 같아 새롭게 Swift 3 기준으로 C 포인터에 대해서 작성해 본다.

2017년 1월 10일 화요일

UserDefaults (NSUserDefaults) 에 대한 소소한 이야기

UserDefaults (Objective-C 에서는 NSUserDefaults) 는 대체로 앱의 설정 값을 저장하고 나중에 읽기 위한 용도로 종종 사용된다. 별도의 파일이나 데이터베이스 엑세스 없이 쓸 수 있다. 굉장히 쉽고 다방면에 활용되어서 글로 정리하는게 피곤한(?) 일이 될 정도인데, 개인적으로 궁금해서 찾아본 몇 가지 정보를 더해서 글로 정리해 본다.

2017년 1월 6일 금요일

Objective-C 코드의 Swift 별명 이야기 (Swift 3 기준)

편의성 측면도 있겠지만 애플에서 Swift 를 강력하게 밀고 있기에 아무래도 macOS나 iOS용 개발 언어는 Swift 가 주류가 될 가능성이 높다. 하지만 그렇더라도 한동안은 Objective-C 와의 동거를 끝낼 수는 없을 것이다. 그 증거로 애플에서는 Xcode 나 Swift 가 업데이트 될 때 마다 Objective-C 코드와의 공존에 대한 기능을 계속 발전시키고 있다.

이번 글은 Objective-C 코드가 Swift 에서 어떻게 읽혀지는지 혹은 Swift 용 별명을 지어서 언어간 차이를 완화시키는 방법이 있는지를 간단히(?) 적어볼까 한다.