클래스의 인스턴스 메소드는타입의 구조 자신의 프로퍼티 값을 수정할 때 신경 쓸 필요가 없지만, 값 타입의 구조체나 열거형 등에서는 인스턴스 메소드가 내부 프로퍼티 값을 변경할 수 없습니다. 이러한 경우 오류를 해결하기 위해서 mutating 키워드를 붙여서 명시해야 합니다. 또한, 프로토콜이 요구하는 메소드가 내부의 프로퍼티를 변경해야 한다면 메소드 앞에 mutating 키워드를 붙여 명시해야 합니다. 그렇다면 왜 값 타입의 인스턴스 메소드는 내부 프로퍼티를 변경할 수 없으며 mutating 은 왜 사용해야 하는 것일까? Swift 에서 값 타입이 복사되었을 때는 같은 주소를 가리키다가 변경이 있을 때는 복사하여 수정하게 되는 COW(Copy on Write)가 있습니다. 값 타입의 인스턴스 메소드로 내..
내용 New and Updates 로 등장한 뉴스로 Dynamic Island 를 살펴보자. 🗞 Live Activities now available in beta(2022.7.27) Live Activities now available in beta - Latest News - Apple Developer Live Activities help people stay on top of what’s happening in your app in real time, right from the Lock Screen. You can now get started with Live Activities and the new ActivityKit framework, which are available in the beta..
Xcode 14 업데이트 후 KakaoSDKAuth에서 저장 프로퍼티에 @available 이 붙는 곳에 다음과 같은 에러 메시지가 등장하였습니다. Stored properties cannot be marked potentially unavailable with @available 에러를 해결하기 위해서 KakaoSDKAuth 를 업데이트 하였습니다. 다행히 검색해보니 데브톡에서 문의를 통해 Xcode 14 배타버전 때 문제를 발견하여 업데이트를 한 지 좀 되었습니다. 데브톡 - Xcode 14 업데이트 빌드 오류 문의 Kakao SDK 변경 이력 아래는 Xcode 14 의 릴리즈 노트에서 가져왔습니다. Stored properties in Swift can’t have type information t..
열거형에 포함된 모든 케이스에 대해서 순회하고 싶을 때가 있습니다. 이때는 CaseIterable 프로토콜을 채택하면 allCase 라는 타입 프로퍼티를 통해 모든 케이스에 대한 컬렉션을 생성할 수 있습니다. ✅ CaseIterable 을 채택하여 enum 순회 import Foundation enum School: CaseIterable { case elementary case middle case high case college } let allCase: [School] = School.allCases print(allCase) // [School.elementary, School.middle, School.high, School.college] 이때 원시값을 갖는 열거형을 만들기 위해서 자료형을 상..
obsoleted @available(macOS, obsoleted: 12.0) deprecated @available(macOS, deprecated: 12.0) 동시 사용 import Foundation enum School: String{ case elementary = "초등학교" case middle = "중학교" case high = "고등학교" case college = "대학교" // deprecated : 더이상 사용되지 않는(경고) 첫번째 버전. // obsoleted : 폐기되어 사용할 수 없는(에러) 첫번째 버전. @available(iOS, deprecated: 13.0, obsoleted: 14.0) // -> iOS 13 부터는 사용되지 않는 deprecated 경고. // -..
함수는 1급시민이기 때문에 상수나 변수에 참조를 할당할 수 있습니다. 1급시민(1급객체)란? 변수나 데이터 구조 안에 담을 수 있음 파라미터로 전달 가능 반환값으로 사용 가능 위의 특징을 가지면 1급시민으로 취급한다. swift 에서 함수는 1급 시민이다. 그래서 다음과 같이 사용이 가능하다. func someFunc(paramA: Any, paramB: Any) { print("someFunc called") } // ✅ 변수에 함수의 참조를 할당할 수 있습니다. var function = someFunc(paramA:paramB:) // ✅ 다음과같이 할당된 변수에 매개변수를 전달하여 사용할 수 있습니다. function(1, 2) 출처: Swift 일급객체(First-class object) 일급시..
내용 Property Wrapper 를 사용하여 UserDefaults 읽고 쓰고 삭제하는 매커니즘을 캡슐화 해보자. Swift-Evolution swift-evolution 에서 property wrappers 를 소개하면서 예시로 UserDefaults 의 매커니즘을 캡슐화하여 사용하는 예시 코드를 소개했다. 살펴보자! swift-evolution/0258-property-wrappers.md at main · apple/swift-evolution 프로퍼티 래퍼는 user defaults 와 같은 string-keyed 데이터에 대한 typed property 들을 제공하는데 사용할 수 있습니다. wrapper type 에서 데이터를 추출하는 매커니즘을 아래처럼 캡슐화할 수 있습니다. @proper..
✅ 의존성 주입(Dependency Injection) 의존성 주입이란 하나의 객체가 다른 객체의 의존성을 제공하는 기술이다. 의존성 그렇다면 의존성이란 무엇일까? 서로 다른 객체 사이에 의존 관계가 있다는 것이다. 이때 의존하는 객체가 수정되면 다른 객체도 영향을 줄 수 있다. 주입 그렇다면 주입은 무엇일까? 주입은 외부에서 객체를 생성하여 넣는 것을 말한다. 외부에서 객체를 주입하기 위해 생성자 등을 사용한다. 이러한 의존성을 만들어주기 위해서 의존성 주입을 사용합니다. 그래서 의존성 주입이 뭔데? 아마 개념에 대해서 들을때 감이 왔을 수 있다. 의존성으로 다른 객체에 영향을 주는 것은 어떤 수정사항이 있을 때 매번 다른 객체를 수정해주어야 하는 것이 아닐까? 짐작한대로 의존성을 가진 코드가 많다면 ..
- MVVM
- WWDC22
- async/await
- 2022 KAKAO TECH INTERNSHIP
- UserDefaults
- Notification
- rxswift
- projectsetting
- APNS
- Protocol
- OpenSourceLibrary
- Algorithm
- Objective-C
- SwiftUI
- IOS
- containerBackground
- Firebase
- watchOS
- YPImagePicker
- MOYA
- WWDC
- RxCocoa
- urlsession
- 서버통신
- Swift
- WidgetKit
- CloneCoding
- configurable widget
- github
- Widget
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Total
- Today
- Yesterday