출처http://seorenn.blogspot.kr/2015/12/swift-gcd-dispatch-semaphore.html DispatchSemaphore 를 사용하는 이유serial dispatch queue 또는 dispatch_barrier_async 함수보다작은 단위를 가진 소스코드의 작은 부분에 대한 동시성 제어가 필요한 경우 사용한다. DispatchSemaphore 사용하기DispatchSemaphore 의 init 시 사용되는 value 는 자원 개수를 뜻한다. semaphore.wait() 는 value 값을 줄이고,semaphore.signal() 은 value 값을 증가시킨다. value 값이 음수가 되면 해당 스레드는 동작을 멈추고 자원을 얻기위해 기다린다. .distantFut..
출처http://seorenn.blogspot.kr/2015/08/swift-dispatch-group.html DispatchGroup 을 사용하는 이유dispatch_group_async 를 통해 이미 group 안에 들어간 job 들이 끝나기를 기다렸다가 모두 완료되면 호출되기를 기대할 때 사용한다. DispatchGroup 사용하기기본적으로 wait 의 경우 synchronous 하게 동작하고,notify 의 경우 asynchronous 하게 동작한다. 1. enter, leave 를 사용하는 방법wait (synchronous) 사용할 때 notify (asynchronous) 사용할 때 2. enter, leave 를 사용하지 않는 방법 enter, leave 보다는 queue.async 의 ..
출처http://kka7.tistory.com/26 확장 (Extensions)기존에 있는 클래스, 구조체, 열거형, 프로토콜 타입에 새로운 기능을 추가한다.Objective C 의 카테고리와 유사하다. 할 수 있는 것들로는 아래 것들이 있다. - 계산 인스턴스 프로퍼티와 계산 타입 프로퍼티를 추가할 수 있다.- 인스턴스 메소드와 타입 메소드를 정의할 수 있다.- 새로운 초기화를 제공할 수 있다.- 서브스크립트를 정의할 수 있다.- 새로 중첩된 타입을 정의하고 사용할 수 있다.- 기존 타입에 프로토콜을 적용할 수 있다. 문법 extension SomeType { // new functionality to add to SomeType goes here } extension SomeType: SomeProt..
출처http://kka7.tistory.com/25 중첩된 타입 (Nested Types)열거형은 종종 특정 클래스나 구조체의 기능을 지원하기 위해 만들어진다.보다 복잡한 context 에서 사용하기 위해유틸리티 클래스와 구조체를 정의하는 것이 편리할 수 있다. 열거형, 클래스, 구조체로 중첩된 타입으로 정의하는 것이 가능하다. 중첩 타입에서의 동작아래 예제는 아래와 같은 구조를 가지고있다. struct BlackjackCard {enum Suit { }enum Rank {struct Values { }}} Values 와 BlackjackCard 는 사용자 정의 초기화가 없는 구조체이기 때문에암시적으로 멤버단위 초기화를 가진다. struct BlackjackCard { // nested Suit enu..
출처http://kka7.tistory.com/24 타입 변환 (Type Casting)인스턴스의 타입을 확인하거나다른 상위 클래스나 클래스 계층 구조에 있는지를 확인한다. 타입 변환은 is 와 as 연산자로 가능하다. 타입 변환에 대한 클래스 계층 정의 class MediaItem { var name: String init(name: String) { self.name = name } } class Movie: MediaItem { var director: String init(name: String, director: String) { self.director = director super.init(name: name) } } class Song: MediaItem { var artist: Strin..
출처http://kka7.tistory.com/23 오류 처리란 (Error Handling)프로그램의 오류를 우아하게 처리하는 과정이다.이는 어떤 이유때문에 실패했는지 이해하는데 종종 유용하다. Swift 에서의 오류 처리는 Cocoa 와 Objective C 에서 NSError 를사용한 오류 처리와 호환된다. 오류를 표시하고 던지기오류 정의는 Error 프로토콜을 준수하는 타입의 값으로 표현된다. enum VendingMachineError: Error { case invalidSelection case insufficientFunds(coinsNeeded: Int) case outOfStock } throw VendingMachineError.insufficientFunds(coinsNeeded: ..
출처http://kka7.tistory.com/21https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html#//apple_ref/doc/uid/TP40014097-CH20-ID48 ARC (Automatic Reference Counting)ARC 는 클래스의 인스턴스에만 적용된다.구조체와 열거형은 값 타입이며, 참조 타입이 아니고참조로 저장되거나 전달되지 않는다. class Person { let name: String init(name: String) { self.name = name print("\(name) is be..
출처http://kka7.tistory.com/22 옵셔널 체이닝옵셔널이 현재 nil 이 될 수 있는 프로퍼티, 메소드, 서브 스크립트를조회하고 호출하는 과정이다. 옵셔널 체이닝에 값이 있으면 프로퍼티, 메소드, 스크립트 호출에 성공한다.옵셔널이 nil 이면 프로퍼티, 메소드, 스크립트 호출은 nil 을 반환한다. 여러 개를 함께 연결할 수 있고 연결된 어떤 링크가 nil 이면 전체 체인은 실패한다. 강제 언래핑 대신 옵셔널 체이닝nil 값을 가진 옵셔널에 강제 언래핑을 사용하면 runtime 오류가 발생한다. 옵셔널 체이닝 호출의 결과는 항상 옵셔널 값이며,프로퍼티, 메소드, 서브스크립트 조회하여 옵셔널이 아닌 값을 반환하더라도 마찬가지이다. class Person { var residence: Res..
출처http://kka7.tistory.com/27 프로토콜메소드, 프로퍼티, 특정 작업이나 기능에 적합한다른 요구사항을 상세하게 정의한다. 문법 protocol SomeProtocol { } protocol AnotherProtocol: SomeProtocol { } protocol TheOtherProtocol : SomeProtocol, AnotherProtocol { } 프로퍼티 요구사항프로토콜은 프로퍼티가 저장 프로퍼티이거나 계산 프로퍼티인지 지정하지 않는다.다만 필수 프로퍼티 이름과 타입, gettable, settable 인지 반드시 지정해야한다. { get set } 을 요구하는 프로토콜 프로퍼티가 존재한다면상수 저장 프로퍼티 ( let a ), 읽기 전용 계산 프로퍼티 ( var a : ..
출처http://kka7.tistory.com/20 해제 (Deinitialization)Swift 는 인스턴스가 더 이상 필요하지 않을 때자동적으로 해제해주고 자원을 돌려준다. ARC 로 인스턴스의 메모리를 관리한다.일반적으로는 수동으로 수행할 필요가 없다. 하지만 리소스 작업할 때 몇 가지 추가적인 정리가 필요할 때가 있다. 그 때 사용한다. class Bank { static var coinsInBank = 10_000 static func distribute(coins numberOfCoinsRequested: Int) -> Int { let numberOfCoinsToVend = min(numberOfCoinsRequested, coinsInBank) coinsInBank -= numberOfC..
- Total
- Today
- Yesterday
- CGImage
- docker
- workerThread
- string
- RunLoop
- 읽기 좋은 코드가 좋은 코드다
- dictionary
- HTTP
- Block
- 꺼내먹어요
- thread
- NSManagedObject
- delegate
- AWS
- Swift 3
- Arc
- NSManagedObjectModel
- EffectiveObjectiveC
- Swift
- applicationWillResignActive
- coredata
- set
- ios
- optional
- Swift 3.0
- Swfit
- CIImage
- NSManagedObjectContext
- Swift3
- UIView
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |