Objective-C Block 동작 심층 분석

블락은 애플에서 closure 개념을 도입하기위해 ANSI C 에 익스텐션 형태로 만들어진 문법이다. 따라서 C/C++/Objective-C에서 모두 사용이 가능하지만 사용법과 메모리 관리에 있어서의 사용법은 언어특성에따라 조금씩 달라진다. 여기서는 Objective-C에서의 블락에 초점을 맞춰 분석을 할 예정이다. 블락(Block)의 실체 블락을 선언할 경우 실제로 컴파일러에의해 생성되는 코드에서는 __block_literal 이라는 구조체(struct) 형태로 선언이된다. 이 구조체 안에는 isa 정보가 포함되어있어서 결국 Objective-C의 객체의 특성을 가지게 된다.(심지어 블락이 C/C++에서 사용되더라도 동일하게 Objective-C의 객체특성을 가진다). Obj-C의 런타임에서 isa에관한 세부 내용은Objective-C 런타임 내부동작 분석 글에 자세히 설명되어있다. ...

2014년 2월 11일 · 4분 · 756단어

NSSplitView 다중 컬럼 생성

현재 XMLRPC를 이용해서 워드프레스로 리모트 퍼블리싱 하는 맥용 코코아 어플리케이션을 개발중이다. 등록된 계정/글목록/세부내용을 보여주기위해서 맥에서 자주사용되는 애플 기본 메일앱이나 에버노트, Ulysses 등에서 사용되는 3 column 형태로 개발을 진행하는 중이다. 기본적으로 인터페이스 빌더(Interface Builder)에서 NSSplitView를 추가하면 행 또는 열이 2개로 나누어져서 추가된다. 여기서 삽질이 시작되었다. 컬럼 수를 늘리기 위해 IB의 스플릿뷰에대한 옵션을 아무리 찾아봐도 없어서 스플릿뷰의 한쪽에 다시 스플릿뷰를 넣어서 컬럼을 3개로 만들었는데, 아무리 생각해봐도 뭔가 이건 아니다 싶은 느낌이 들었다. 결국 한참을 구글링 한 끝에 IB의 Object Tree 화면에 그냥 NSView를 ‘Split View’ 항목 아래로 끌어다 놓으면 된다는 사실을 발견하고나서 허탈해서 이 글을 포스팅 한다. ‘Split View’ 아래의 subview들 숫자만큼 자동으로 컬럼 수가 나누어질지 누가 알았나 허허. (아래 그림 참조) ...

2013년 7월 25일 · 1분 · 166단어