Xcode에 기본으로 내장되어있는 디버거(debugger)인 LLDB는 기존에 가장 많이 사용되던 gdb보다 많은 유용한 기능들을 갖고있다. LLDB 명령어 분석기에는 파이썬(Python) 인터프리터가 내장되어있어서 script 명령어로 파이썬 코드들을 사용할 수 있다. 이 또한 반대로… [본문 읽기]
카테고리 글 목록: Objective-C / Swift
KVO 컨텍스트 표현을 위한 자기참조 포인터
다음과같은 포인터변수에 자신의 변수명 그대로 자기자신의 주소값을 할당하는 특이한 변수선언을 처음 볼 경우 당황스러울 것이다. void *myVariableName = &myVariableName 하지만 이는 자기참조 포인터 혹은 유니크 컨텍스트 포인터(unique context pointer)라는 이름으로… [본문 읽기]
C auto, static, extern 키워드 의미
C에서 변수는 값이 저장되는 메모리 영역이나 변수의 유효범위에 따라 구분되는데 auto, static, extern 이 세가지 키워드(keyword)를 이용하여 구분을 할 수 있다. 변수의 유효범위는 크게 지역변수(local variable)와 전역변수(global variable)로 나뉘며, 실제… [본문 읽기]
Objective-C Block 동작 심층 분석
블락은 애플에서 closure 개념을 도입하기위해 ANSI C 에 익스텐션 형태로 만들어진 문법이다. 따라서 C/C++/Objective-C에서 모두 사용이 가능하지만 사용법과 메모리 관리에 있어서의 사용법은 언어특성에따라 조금씩 달라진다. 여기서는 Objective-C에서의 블락에 초점을 맞춰… [본문 읽기]
NSViewController를 리스폰더 체인에 추가하기
NSViewController가 이벤트를 수신하여 처리하기 좋은 객체인데, 이녀석은 FirstResponder가 될 수 없다보니 코코아에서 기본적으로 이벤트를 수신하는 것이 불가능하다. NSViewController를 사용하면 NIB(혹은 xib)파일로 부터 NSView를 매우 쉽게 불러올 수 있다. 하지만 NSWindowController와는… [본문 읽기]
코어데이터(Core Data) 한줄로 데이터 불러오기
코어 데이터는 익숙해지면 매우 편리한 기능을 제공해주지만 한번 사용하려고 할 때 마다 셋업해줘야 할 것들이 매우 많아서 처음 접해보는 개발자들에게 문턱이 높은 편이다. 애플의 Core Data Programming Guide에서 데이터를 불러오기(fetch)위해… [본문 읽기]
Objective-C 런타임(runtime) 내부 동작 분석
맥의 코코아(Cocoa)나 iOS의 코코아터치(CocoaTouch) 프레임워크를 다루다보면 Objective-C 런타임(runtime)과 항상 맞닥뜨리게 된다. 입문자들의 경우에는 프레임워크를 이용해서 잘 동작하는 Objective-C 코드를 작성하는데만 급급하지만, 해당 객체가 응답할 수 없는 잘못된 메시지를 보내서 런타임… [본문 읽기]
코어데이터(Core Data)와 데이터베이스의 차이
애플의 Core Data Programming Guide 문서에는 코어데이터(Core Data)가 데이터베이스가 아니라고 명시되어있다. 하지만 코어데이터와 데이터베이스 둘다 검색가능하고, 영속적인 저장소를 제공하는 방법이므로 구체적으로 무엇이 다른지는 명확하지 않다. 이 포스트에서는 코어데이터가 동작하는 방법을… [본문 읽기]
NSSplitView 우선순위 기반 리사이징 예제
NSSplitView의 경우 각 컬럼이 비율을 유지하면서 리사이징 되는것이 기본값이다. 즉 NSSplitView의 크기가 변할때 각 컬럼이 동일 비율로 증가하게되는데, 이러한 방식은 사이드바를 가지는 UI(예: 아이튠즈나 엑스코드의 사이드 바)에는 적합하지 않다. 이… [본문 읽기]
iOS, Mac 앱 개발시 하위 호환성 유지
맥OS에서 개발할때, 최신 버전의 SDK를 사용하면 최신 기능들을 이용해서 더 멋진 어플리케이션을 손쉽게 개발 할 수 있다. 하지만 결국 하위 호환성(backward compatibility)을 고려하지 않으면 이전 버전의 OS에서 제대로 작동하지 않는… [본문 읽기]