2016년 11월 8일 화요일

[Xcode] 비동기 루틴 유닛 테스트 (Asynchronous Unittest)

Xcode 의 유닛테스트 기능은 동기(Sync)코드 테스트에 최적화 되어있다. 당연하게도 비동기 루틴의 경우 해당 테스트 컨텍스트가 종료된 뒤에 비동기 결과가 들어오니 쉽게 판단할 수는 없을 것이다.

다행히도 Xcode 의 XCTest 모듈은 이런 비동기 콜(Asynchronous Call)에 대비하기 위한 약간의(?) 기능이 제공되고 있어서 소개해 본다.

2016년 10월 27일 목요일

우연히 발견한 macOS 10.12 NSAlert 버그(?) 삽질기

macOS 10.12 시에라가 업데이트 된 후로 개발 중이던 맥 앱에서 DETECTED_MISSING_CONSTRAINTS 예외가 발생하는 상황을 겪었다. 물론 10.11 에서 개발할 당시에는 잘 돌아가던 앱이었는데 10.12 부터 이런 오류가 발생하기 시작했다.

다행인 점은 죽지는 않고 경고 수준으로 끝나는 오류였다는 점이다. 사람마다 느끼는 점은 다르겠지만, 나에겐 찝찝함을 남기는 메시지가 떴기에 그냥 넘길 수가 없었다.

2016년 9월 27일 화요일

2016년 9월 20일 화요일

Xcode 8 GM 으로 겪어보는 Swift 3 의 변화들 #2

Xcode 8이 드디어 베타 딱지를 떼고 GM 마크를 박고 올라왔다. 이제 기능 면에서 바뀔 일은 없을 것 같으니 마지막으로 마무리 하는 겸으로 무엇이 바뀌었는지에 대한 경험담을 이어서 적어본다.

이 글은 'Xcode 8 Beta 로 겪어보는 Swift 3 의 변화들' 글에서 정리한 내용을 제외하고 GM 버전에서 추가로 발견한 사항들을 정리한다.

이 글을 올리는 오늘 Xcode 8 이 정식 릴리즈 되었다는 것은 참 거시기하다

2016년 9월 13일 화요일

릴리즈 모드로 빌드한 앱이 죽는다

이 글은 튜토리얼이나 API소개글이 아니라 실제로 겪었던 일을 토로(?)하기 위한 글이다. 내용은 제목 처럼 릴리즈 모드로 빌드한 앱을 돌려보면 죽는다는 것이고 이를 해결하기 위해 거친 고난과 해결법에 대해 소개한다.

2016년 9월 6일 화요일

[Cocoa] 타이틀바는 없지만 툴바에 표준 버튼이 있는 윈도우 만들기

뭔가 제목이 좀 복잡한 감이 있는데, 영문으로 적으면 Unified Title and Toolbar 라는 형식의 윈도우를 만드는 방법에 대한 글이다. 내용 자체는 매우 간단한데 이번엔 영상으로 (콩글리쉬와 함께 -_-) 만들어봤다.

2016년 8월 9일 화요일

NSPopover Cheatsheet

NSPopover는 말풍선 모양의 팝업윈도우 컴포넌트이다. 미려한(?) UI를 구성하는데 필수적이기 때문에 정리해 본다.


2016년 7월 21일 목요일

[Objective-C] Block Syntax 초간단정리

하도 잊어먹어서 - 거기다 요즘은 Swift만 써대다보니 더욱 더 잊어먹어서 - Objective-C 블럭 문법(Block Syntax)을 자주 쓰는 것들 위주로 예제와 함께 정리해본다.

2016년 7월 20일 수요일

Xcode 8 Beta 로 겪어보는 Swift 3 의 변화들

지금까지는 Xcode 의 각 베타가 나올 때 마다 변화점들을 기록하곤 했는데, Swift 가 오픈소스화 된 지금은 이런 변화를 매번 캐치할 필요는 없을 것 같다. 무엇보다, Swift 문법(Syntax) 자체의 변화를 정리할 필요도 없이 아래 사이트를 보면 Swift 3 의 변화점을 알 수 있다.

https://swift.org/blog/swift-3-0-preview-1-released/

3.0 의 변경점은 더 이상 일어나지 않고 이제 4.0 을 개발한다고 선언까지 된 상태이니 이제 기정사실이 된 변화점들이다.

이렇게 정리가 잘 된(?) 글들이 있으니 이제 내가 할 일은 그냥 체감하는 것 뿐인것 같다. 그래서 실제로 체감(?)해 보고 느낀 것들을 정리해 본다. 물론 이번 글이 전부는 아니겠지만...

2016년 7월 19일 화요일

NSTask 와 NSPipe 를 이용해 쉘 커맨드 실행시켜서 결과 얻어오기

과연 이 내용이 현대(?)시대에 필요할지에 대해서 의문이 있을지도 모르겠지만 아직까지는 터미널 유틸리티의 특수성(?) 때문에 종종 쓰이고 있다고 생각된다. 그래서 이에 대해 정리해 본다.