본문 바로가기

iOS/Swift74

Swift) Struct vs Class Struct - Value Type 구조체는 하나 이상의 프로퍼티를 묶어 새로운 타입을 정의하는 도구이다. [명명법 : 타입의 이름은 UpperCamelCase 를 사용하고, 내부 프로퍼티와 메소드는 LowerCamelCase를 사용한다.] struct Person { let name: String let age: Int func run() { // ... } } 구조체의 경우는 개발자가 직접 이니셜라이저를 생성하지 않아도, 자동적으로 생성된 멤버와이즈 이니셜라이저를 통하여 인스턴스 프로퍼티의 이름으로 자동 지정된다. struct Person { let name: String let age: Int func run() { // ... } } let jiseong = Person(name: "Jiseong.. 2022. 2. 12.
Swift) Notification, NotificationCenter Notification NotificationCenter를 통해 정보를 저장하기 위한 컨테이너이다. Notification을 post(전달)할 때 동기적으로 동작한다. NotificationCenter NotificationCenter에 등록된 observer에게 동시에 notification을 전달하는 클래스이다. NotificationCenter 클래스는 한 객체가 이벤트가 발생했다는 Notification을 전달(post)하면, NotificationCenter에서 등록된 옵저버에게 객체에서 발생한 이벤트를 보낸다. 해당 이벤트를 다루는 옵저버가 있다면, 미리 설정해놓은 처리로(이런 이벤트가 들어오면, 이렇게 처리해라) 이벤트에 대한 처리(콜백, 피드백)을 한다. .default = 앱 전체에 전역.. 2022. 2. 12.
Swift) Singleton Singleton 싱글톤은 특정 클래스의 인스턴스가 단 하나임을 보장하는 객체를 말한다. 싱글톤은 애플리케이션이 몇번을 요청하든 이미 생성된 동일한 인스턴스를 반환한다. 프로그램 전체에 단 하나의 전역 인스턴스를 만들어놓고, 어디서든 이 하나의 인스턴스만 접근, 사용할 수 있게 하면 된다. class SingleTonExample { static let shared = SingleTonExample() var testNumber: Int = 0 private init() { } // 객체 생성, 초기화 막음 } let test = SingleTonExample.shared test.testNumber = 10 // reference type (class) print(SingleTonExample.shar.. 2022. 2. 12.
Swift) KVO(Key-Value-Observing) KVO? (옵셔널 아님ㅋ) 다른 객체의 프로퍼티 변경사항을 객체에 알리기 위한 코코아 프로그래밍 패턴이다. NSObject를 상속받아야 사용할 수 있기때문에 상속이 되는 Class에서만 사용이 가능하다. observer와 observed는 일대일 관계, 일대다 관계가 가능하다. 모델과 뷰같은 논리적으로 분리된 관계간에 변경사항을 전달할 때 유용하다. Objective-C 런타임에 의존하는 방식이다. 그래서 clean swift 코드엔 지양한다. 타입 정의 밖에 observer를 추가하는 것 뺴곤 property observer(willSet, didSet)과 비슷하다. class Address: NSObject { var town: String { willSet { print(newValue) } did.. 2022. 2. 12.
일반화, 추상화, 캡슐화, 은닉화, 암호화 일반화 서로 다른 개체들로부터 공통된 개념을 추출하는 것 추상화 개체들로부터 필요한(중요한) 정보, 포인트만을 추려내는 것 캡슐화 실제로 구현되는 부분을 외부에 드러나지 않도록 캡슐(Struct, Class)로 감싸 이용방법만 사용자(외부 코드)에게 알려주는 것 은닉화 내부 데이터, 내부 연산, 기능들을 외부에서 접근치 못하도록 숨기는 것 (접근제어자) 암호화 암호화 알고리즘으로 값을 조작하여 본래 값을 알아볼 수 없도록 하는 것, 데이터를 알아보기 위해 복호화가 필요 정리 내부 부품(프로퍼티)이나, 기능(메소드)을 특정 기계(타입)으로 한번 감쌈으로써(캡슐화), 기본적으로 캡슐화와 은닉화가 함께 진행되는 줄 알았지만, 내부 부품, 기능들에 대한 외부 조작, 간섭을 방지하기 위해 내부 부품, 기능들에 추.. 2022. 2. 12.
Swift) return에 대한 의문 의문점 여지껏 함수내부에 return이 어느 위치에 있든 쓰기만 하면 함수를 탈출하는 흐름제어구문(Control Transfer Statements)인줄 알았다. 흐름제어구문(Control Transfer Statements)은 맞다. 근데 공식문서를 확인해보니 이렇게 써있더라 When a return statement isn’t followed by an expression, it can be used only to return from a function or method that doesn’t return a value (that is, when the return type of the function or method is Void or ()). 그냥.. 반환할 것이 없는 함수엔 return만을 .. 2022. 2. 12.