iOS/Swift (9) 썸네일형 리스트형 [Swift] didSet,willSet 이란 didSet,willSet 이란willSet과 didSet은 프로퍼티 옵저버로서 특정 프로퍼티 값이 변경이될때 이를 감지하고 특정 코드를 실행할 수 있게 해줍니다. 이 두가지는 객체의 상태관리와 동작을 제어하는 데 도움을 줍니다. willSet 프로퍼티의 값이 실제로 변경되기 직전에 호출이 됩니다.값이 변경되기 이전에 어떤 작업을 수행할 때 사용됩니다.var name: String = "John" { willSet(newName) { print("이름이 곧 \(newName)으로 변경될 것입니다.") }}name = "Alice"// 출력: 이름이 곧 Alice으로 변경될 것입니다. didSet 프로퍼티의 값이 실제로 변경된 직후에 호출됩니다.값이 변경된 후에 어떤 작업을 수행.. [Swift] Key-Value Observing (KVO) 란 Key-Value Observing (KVO) 이란 KVO(Key-Value Observing)는 객체의 속성(property)이 변경될 때 이를 자동으로 감지하고 반응할 수 있는 메커니즘입니다. 만약 어떠한 객체에 'name' 란 속성이 변경이 되었을때 이를 자동으로 감지하고 싶을때 KVO를 사용하여 해당 변경 사항을 모니터링할 수 있습니다. class Person: NSObject { @objc dynamic var name: String = ""}class NameObserver: NSObject { var person: Person init(person: Person) { self.person = person super.init() // K.. [Swift] Key-Value Coding(KVC) 란 Key-Value Coding(KVC) 란 Key-Value Coding(KVC)는 Objective-C에서 유래한 프로그래밍 기법으로, KVC는 객체의 속성에 대해 직접 접근하고 수정할 수 있는 방법을 제공합니다. 주로 Dynamic Programming과 관련된 작업을 할 때 유용합니다. 사용 예시import Foundationclass Person: NSObject { @objc var name: String @objc var age: Int init(name: String, age: Int) { self.name = name self.age = age }}let person = Person(name: "John", age: 30)// Key-.. [iOS][Swift] App LifeCycle - 앱 생명주기 앱 생명주기 란?생명주기란 앱의 최초 실행에서 부터 앱이 완전히 종료되기 까지 앱이 가지는 상태와 그 상태 사이의 전이를 말합니다. 앱의 상태는 앱이 현재 어떠한 것을 할 수 있는지를 결정합니다. 앱의 상태 (App State) 1. Not Running ( 실행되지 않은 상태 )앱이 실행하지 않은 상태 -> 이전에 실행되었던 앱이 종료된 상태를 말합니다 application(_:willFinishLaunchingWithOptions:)application(_:didFinishLaunchingWithOptions:) 2. Inactive ( 비활성 ) -> Foreground앱이 사용자 화면에 있지만 이벤트를 받지 못하는 상태를 말합니다. 주로 전화나 메세지 알림과 같은 이벤트로 인해 이 상태가.. [Swift] Extensions (확장) 이란 Extensions (확장) 이란 기존의 클래스 , 구조체, 열거형 등의 타입에 새로운 기능을 추가 할 수 있는 기능입니다. 이를 통해 기존의 타입을 확장하거나, 프로토콜 적용 등을 통해 새로운 기능을 추가할 수 있습니다. -> 원본 타입에 접근하지 못하는 타입들을 확장하는 개념! 상속 VS Extension 상속은 클래스 타입에서만 사용 가능하지만 Extension은 구조체 , 클래스 , 열거형 , 프로토콜 타입에서도 사용 가능합니다. 사용 예시 만약 Color 를 사용하고 싶을때 hex 값을 통해 색을 불러오고 싶지만 원래 Color 에는 해당 기능이 없기 때문에 extension을 사용하여 간편하게 사용이 가능하다. extension Color { init(hex: String) { let sca.. [Swift] unrecognized selector sent to instance 더보기 2023-06-02 14:56:27.902501+0900 Clima[14882:416323] -[Clima.WeatherViewController searchTextFiled:]: unrecognized selector sent to instance 0x131707320 2023-06-02 14:56:27.913247+0900 Clima[14882:416323] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Clima.WeatherViewController searchTextFiled:]: unrecognized selector sent to instance 0x131707320' *** .. [Swift] Auto Layout 이란 (출처: Apple Developer) AutoLayout 의 정의 오토 레이아웃(Auto Layout)은 제약 조건(Constraints)을 이용해서 뷰의 위치를 지정하는 것입니다. 다시 말하면, 두 뷰 사이의 관계를 제약 조건이라는 것을 이용해서 뷰의 크기와 위치를 지정하는 것입니다. AutoLayout 이 필요한 이유는 무엇일까 아이폰의 기기 종류는 매우 다양하고 회전하는 경우 좌표들이 모두 다 달라진다. 모든 기기마다 width 와 height 는 다르기때문에 한 아이폰 기기에서는 알맞게 화면이 나오지만 다른화면에서는 이상한 위치에 배치가 되기 때문에 절대적인 위치보다 상대적인 위치에 배치가 되면 이 문제를 해결할수있다. 같은 좌표인 (5,5)는 아이폰 기기마다 다른 위치에 분포를 하게 된다 따라.. [Swift] Optional 정리 Optional이란? 값이 있을수도 있고 없을수도 있는 알수없는 상태를 Optional 이라 합니다. var someVariable : Int? = nil if someVariable == nil { someVariable = 90 } print("someVariable wrap전 ::",someVariable) //Optional(90) UnWrapping 감싸져 있는 것을 벗기는 것 -> Optional(90)을 벗긴다 1. someVariable 이 비어있으면 값이 없으면 기본값으로 이것을 넣겠다 설정 somVariable = nil let myValue = someVariable ?? 10 print("myValue : \(myValue) ") 2. someVariable의 값이 있다면 other.. 이전 1 2 다음