[iOS] App Life Cycle(1) - Multiple Windows in iOS
2022. 10. 19. 00:22
iOS/iOS
Apple은 WWDC19를 통해 iOS13이후부터 Multiple Window를 제공하게 되었다. Multiple Window를 위해 Scene이라는 개념이 추가가 되면서, 기존의 AppDelegate도 변하게 되고, SceneDelegate가 새롭게 등장하게 되었다. 앞으로 여러 포스팅에 걸쳐서 Application의 Life Cycle을 알아보고자 한다. 우선, 이번 포스팅에서는 UIWindow와 UIScene의 개념을 간략히 알아보고, 어떤 방식으로 Multiple Window를 제공하는지 알아보고자 한다. UIWindow UIWindow란, View들을 담고 있는 컨테이너이다. 특별한 경우를 제외하고선, 하나의 Window만 생성하고, View가 바뀔 시에는 Window가 바뀌는 것이 아닌! Wi..
[Swift] Notification
2022. 10. 8. 21:03
iOS/Swift
Notifications은 Cocoa의 Observer pattern중 하나로, broadcast 방식으로 여러 객체에 이벤트를 전달 할 수 있다. 동작부터 알아보자면 event를 보내는 Object는 Notification 객체를 만들어 post한다 이 Notification 객체는 NotificationCenter로 가게 된다. 해당 event를 받고 싶은 객체는 Observer를 통해 NotificationCenter에 등록한다. NotificationCenter는 등록된 객체에게 broadcast방식으로 Notificatoin 객체를 보낸다. Notification Object 앞서 살펴보았듯이, event를 보내기 위해서는 Notification 객체를 생성 해야 한다. Notification ..
[Swift] Delegate
2022. 10. 7. 17:22
iOS/Swift
Delegate란, 한국말로 위임이란 뜻이며, 한 object가 해야되는 행위를 다른 object로 위임(대신)하는 pattern 이다. iOS에서 delegate는 protocol로 구현이 된다. 우선, 이 protocol에 대해 간단히 살펴 보자 Protocol protocol은 정의를 하고 제시를 할 뿐 기능을 구현하지는 않는 하나의 타입이다. struct나, class는 이를 상속하는 것이 아닌 채택한다는 표현을 쓴다. 쉽게 말하자면, Protocol은 하나의 행동 규범 혹은 틀 이라고 생각하면 된다. 음식점을 가지고 예시를 들어보자! 기본적으로 음식점을 차리기 위해선 요리를 해야한다. 또한, 음식도 팔아야 한다 즉, 음식점을 protocol로 생각하자면, 요리를한다, 음식을 판다 ... 등등의 ..
[Swift] KVO (Key-Value-Observing)
2022. 10. 6. 17:20
iOS/Swift
KVO란, Object의 properties의 변경을 다른 Object에 알리기 위한 Cocoa programming pattern NSObject를 상속한 Object에서만 KVO 사용가능하다. 또한, NSObject에 KVO를 위한 기본적인 methods가 잘 구현되어 있기 때문에 Override 할 필요가 없다. KVO in Swift 우선, KVO를 사용하기 위해 NSObject를 상속 하여야 한다. 또한, Obeserve(관찰)할 property에 대해 @objc attribute와 dynamic modifier를 추가한다. class Address: NSObject { @objc dynamic var cityName: String init(cityName: String) { ... } } cl..
[Swift] KVC (Key-Value-Coding)
2022. 10. 5. 21:43
iOS/Swift
KVC란, Key-Value-Coding을 의미하며, 캡슐화된 객체에서 getter나 setter를 통한 직접 접근이 아닌 Key, KeyPath값을 통해 인스턴스의 value(property)에간접적으로 접근할 수 있도록 NSKeyValueCoding protocol에 의해 제공되는 machanism KVC에서 핵심인 Key와 KeyPath에 대해 알아보자 Key 우선 Key는 위에서 보았듯이, value(property)에 간접적으로 접근 할 수 있게 해준다. key값은 property의 이름과 같아야하며, ASCII 코드의 String이다 하지만, Key의 경우에 Objective-C의 문법으로 Swift에서 사용할 경우 Objective-C의 최상위 Root Class인 NSObject를 상속 받..
[Swift] Subscript
2022. 10. 5. 15:53
iOS/Swift
Subscript란, Collection, List, Sequence 등 집합의 특정 member elements에 간단하게 접근할 수 있는 Type properties subscript 사용으로 추가적인 methods 없이 특정 값에 할당하거나 가져올 수 있다. Array의 경우 []안의 index를 통해 member elements 접근 → 즉 index는 subsrcript var arr: [String] = ["가", "나", "다", "라"] arr[1] //get arr[1] = "가나다" //set → 실제 Array안에 선언되어 있는 subscript subscript(index: Int) -> Element { get set } Dictionary의 경우도 마찬가지로 key를 parame..