Home » GCD

GCD

gcd in swift3

GCD in Swift3 iOS/OSX에서 동시성을 처리하기 위해서는 NSThread로부터 NSOpaerationQueue에 이르는 방법이 있었고, 시스템 레벨에서 모든 걸 관리해주는 GCD가 나오기에 이르렀다. 하지만 GCD는 libdispatch의 API를 그대로 사용했기 때문에 Swift에서는 가장 번거로운 문법을 이용해야 했었으나, Swift3에서 API를 전면적으로 개선했다. dispatch_async 이전에는 동기/비동기 여부를 결정한 후 어떤 큐를 쓸 것인지를 결정하는 순서로 코드가 작성되었는데, 이제는 이 순서가 바뀌었다. 왜냐면 dispatch_async, dispatch_sync는 자유함수에서 큐의 메소드로 편입되었기 때문이다. DispatchQueue.global(attributes:[.qosDefault]).async { // 백그라운드 작업 DispatchQueue.main.async(execute: { /* … */ }) } 큐의 속성은 생성시점에 지정될 수… 더 보기 »gcd in swift3

[Objective-C] CGD를 사용한 싱글톤 구현하기 (공유 인스턴스)

어떤 클래스의 인스턴스를 공용으로 만드는 것은 사실 알게 모르게 많이 사용하고 있는 패턴이다. 예를 들어 [NSFileManager defaultManager] 라든가 [UIApplication sharedApplication], [NSNotificationCenter defaultCenter] 같은 것들이 공용 인스턴스가 될 것이다. 이는 싱글톤이라는 패턴이라고 하는데, 그러니까 단 하나만 존재한다는 뭐 그런 의미겠지. 암튼 싱글톤을 만드는 방법은 좋은 점도 있겠지만 글로벌하게 접근하는 객체를 위해서 만들기에는 좀 부담스럽지 않은가 하는데, 아래와 같은 방법을 통해 (이는 전통적인 싱글톤 구현방법은 아니라고 한다.) 손쉽게 만들 수 있다. 이는 코드를 그대로 가져다 붙이기만 하면 되고, 빠르고, ARC의 적용을 받으며,… 더 보기 »[Objective-C] CGD를 사용한 싱글톤 구현하기 (공유 인스턴스)