swift 25

KVC, KVO

KVC(Key-Value Coding) 특정 문자열(keyPath)을 통해 프로퍼티에 접근가능한 방법 객체의 값을 직접 가져오지 않고, Key 또는 KeyPath를 통해 간접적으로 데이터를 가져오는 방법 struct Rectangle { var size: Int } struct Figure { var division: Rectangle } let rectangle = Rectangle(size: 20) var figure = Figure(division: rectangle) figure[keyPath: \.division.size] // 20 figure[keyPath: \.division.size] = 10 // 10 KeyPath 생성 let figureKeyPath = \Figure.division..

swift 2021.12.08

Properties

property(프로퍼티) 크게 5가지로 구성 1. 저장 프로퍼티(Stored Properties) 2. 지연 저장 프로퍼티(Lazy Stroed Properties) 3. 연산 프로퍼티(Computed Properties) 4. 프로퍼티 감시자(Property Observers) 5. 타입 프로퍼티(Type Properties) 1. 저장 프로퍼티(Stored Properties) 가장 단순한 개념으로 클래스 또는 struct의 인스턴스와 연관된 값을 저장하는 프로퍼티 class TestProperty{ var a: Int // Stored Property var b: Int // Stored Property } 2. 지연 저장 프로퍼티(Lazy Stored Properties) expression :..

swift 2021.12.08

ARC(Auto Reference Count)

ARC swift는 Automatic Reference Counting(ARC)를 사용하여 메모리를 추적하고 관리합니다. Swift의 대부분의 경우에서 메모리 관리가 그저 작동 한다는 의미로 직접 메모리를 관리할 필요가 없습니다. ARC는 클래스의 인스턴스가 더이상 필요하지 않을때 클래스 인스턴스에서 사용하는 메모리를 자동으로 해제 합니다. ARC는 클래스 인스턴스가 더 이상 필요하지 않을 때 메모리를 자동 해제 (컴파일시 작동) 힙에 메모리를 자동적으로 할당할 때 ARC가 메모리를 자동으로 해제시켜 준다. 순환참조가 발생할 시 영구적으로 메모리가 해제되지 않을 수 있음​ Swift이전의 Object-C에선 ARC가 아니라 MRC(Manual Reference Counting)힙에 메모리를 직접 할당/해..

swift 2021.12.07

Strong, Weak, Unowned, 순환참조

Strong(강한 참조) ARC의 개념에서 힙에 인스턴스가 할당될 때 RC(Reference Count)가 +1되는게 강한참조 별다른 선언이 없으면 default가 strong(강한 참조 객체) ​ Weak(약한 참조) 인스턴스 참조할 시 Reference Count값 증가하지 않음 참조 객체가 메모리에서 해제될 시 nil이 할당되어 메모리 해제 ​ Unowned 인스턴스 참조할 시 Reference Count값 증가하지 않음 참조 객체가 메모리에서 해제될 시 nil을 할당 받지 못하고 해제된 메모리 주소 계속 가지고 있음 ​ 순환 참조란? 순환 참조란 두 객체가 서로가 서로를 참조하고 있는 형태 순환참조는 강한(strong) 순환 참조, 약한(weak) 순환 참조, unowned 순환 참조가 존재 합니..

swift 2021.12.07

Swift언어의 특징

애플에서는 아래와 같은 Swift의 특징을 나타내고 있습니다. 1. 안정성(Safe) Swift에서는 엄격한 문법을 적용하여 프로그래머의 실수를 방지합니다. 특히 nil이라는 옵셔널 타입을 사용하여 컴파일 타임의 오류를 방지합니다. 또한 guard 구문, 오류처리, 강타입언어등 안정성있는 프로그래밍을 지향하고 있습니다. 2. 신속성(Fast) Swift는 C와 Objective-C의 계승자로써 Low-Level의 타입, 흐름제어, 연산자등을 포함하고 있으며 클래스, 프로토콜, 제네릭 타입같은 객체 지향 기능도 제공합니다. 3. 소스 및 바이너리 호환성(Compatibility) Swift5를 사용하면 새로운 버전의 컴파일러를 사용하기 위해 Swift4코드를 수정할 필요가 없다. 또한 Swift5는 앱에 ..

swift 2021.12.07