출처http://kka7.tistory.com/22 옵셔널 체이닝옵셔널이 현재 nil 이 될 수 있는 프로퍼티, 메소드, 서브 스크립트를조회하고 호출하는 과정이다. 옵셔널 체이닝에 값이 있으면 프로퍼티, 메소드, 스크립트 호출에 성공한다.옵셔널이 nil 이면 프로퍼티, 메소드, 스크립트 호출은 nil 을 반환한다. 여러 개를 함께 연결할 수 있고 연결된 어떤 링크가 nil 이면 전체 체인은 실패한다. 강제 언래핑 대신 옵셔널 체이닝nil 값을 가진 옵셔널에 강제 언래핑을 사용하면 runtime 오류가 발생한다. 옵셔널 체이닝 호출의 결과는 항상 옵셔널 값이며,프로퍼티, 메소드, 서브스크립트 조회하여 옵셔널이 아닌 값을 반환하더라도 마찬가지이다. class Person { var residence: Res..
출처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/28 제네릭 제네릭이 해결하는 문제 func swapTwoInts(_ a: inout Int, _ b: inout Int) { let temp = a a = b b = temp} var someInt = 3var anotherInt = 10 swapTwoInts(&someInt, &anotherInt) 위와 같은 코드를 자료형 별로 모두 만들 필요가 없게해준다. 제네릭 함수 func swapTwoValues(_ a: inout T, _ b: inout T) { let temp = a a = b b = temp } 위 함수는 Int, Double, String 등 모든 자료형에서 사용할 수 있다. 타입 매개변수, 이름짓기위 swap 예제에서 견본타입 T 는 타..
출처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..
출처http://kka7.tistory.com/19 초기화클래스, 구조체, 열거형의 인스턴스를 사용하기 전에 준비하는 단계이다. Swift 초기화는 Objective-C 와 다르게 값을 반환하지 않는다.이 규칙은 타입의 새로운 인스턴스를 처음 사용하기 전에확실히 초기화가 되는 것을 보장한다. 저장 프로퍼티에 대한 초기 값 설정클래스와 구조체는 반드시 클래스나 구조체의 인스턴스가 생성될 때모든 저장 프로퍼티에 적절한 초기값을 설정해야한다.저장 프로퍼티는 불확실한 상태로 남아있을 수 없다. 즉, var temperature: Double 와 같은 property 가 있으면 반드시 initializer 에서 정의가 필요하다. 저장 프로퍼티에 기본 값을 할당하거나 초기화에서 초기값을 설정할 때프로퍼티 옵저버는 ..
출처http://kka7.tistory.com/18 상속 (Inheritance)Swift 는 상위 클래스의 정의가 일치하는지 확인하여오버라이드가 정확히 되는 것을 보장한다. 클래스는 프로퍼티의 값이 변경되었을 때 순서대로 통지하도록상속된 프로퍼티에 프로퍼티 옵저버를 추가할 수 있다.옵저버는 저장프로퍼티, 계산프로퍼티 관계없이 모든 프로퍼티에 추가 가능하다. 상속 기본아무 클래스도 상속받지 않은 클래스를 기본클래스라 한다. Swift 클래스는 보편적인 기본 클래스로부터 상속받지 않는다.상위 클래스를 지정하지 않은 클래스는 자동으로 기본클래스가 된다. class Vehicle { var currentSpeed = 0.0 var description: String { return "traveling at \..
출처http://kka7.tistory.com/17 서브스크립트 문법컬렉션, 리스트, 시퀀스의 멤버 요소에 간편하게 접근하기 위해클래스, 구조체, 열거형에서 서브스크립트를 정의할 수 있다. 서브스크립트는 1차원으로 제한되지 않고사용자 정의 타입의 필요에 따라 여러 개의 입력 매개변수로서브스크립트를 정의 할 수 있다. 서브스크립트는 인스턴스 이름 뒤에 대괄호 ( [ ] ) 안에 하나 이상의값을 작성하여 타입의 인스턴스를 조회하는 것이 가능하다. subscript(index: Int) -> Int { get { // return an appropriate subscript value here } set(newValue) { // perform a suitable setting action here } } 이..
출처http://kka7.tistory.com/16 메소드구조체와 열거형에 메소드를 정의할 수 있는 것이Objective-C 와의 큰 차이점이다. Swift 에서는 클래스, 구조체, 열거형에서 추가할 수 있다. 인스턴스 메소드인스턴스 메소드는 함수와 같은 문법을 가진다. class Counter { var count = 0 func increment() { count += 1 } func increment(by amount: Int) { count += amount } func reset() { count = 0 } } let counter = Counter() counter.increment() counter.increment(by: 10) counter.reset() self 프로퍼티 타입의 인스턴스..
출처http://kka7.tistory.com/15 프로퍼티 (Properties)프로퍼티는 특정 클래스, 구조체, 열거형의 연관된 값이다. 저장 프로퍼티는 인스턴스의 일부로 상수와 변수 값을 저장하는 반면계산 프로퍼티는 값을 계산한다. 저장 프로퍼티는 클래스와 구조체에서만 제공되고계산 프로퍼티는 클래스, 구조체, 열거형에서 제공된다. 저장 프로퍼티 (Stored Properties)가장 단순한 형태로 상수나 변수에 저장된다.var, let 키워드가 사용된다. struct FixedLengthRange { var firstValue: Int let length: Int } var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3) // the ..
- Total
- Today
- Yesterday
- CGImage
- 읽기 좋은 코드가 좋은 코드다
- coredata
- RunLoop
- EffectiveObjectiveC
- string
- UIView
- NSManagedObjectModel
- Swift 3
- Swift
- 꺼내먹어요
- thread
- dictionary
- set
- applicationWillResignActive
- delegate
- HTTP
- ios
- NSManagedObjectContext
- docker
- optional
- Swfit
- Block
- CIImage
- workerThread
- AWS
- NSManagedObject
- Arc
- Swift3
- Swift 3.0
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |