본문 바로가기

SWIFT8

[Swift][SwiftUI] PropertyWrapper의 개념 및 @State, @Binding propertyWrapper의 개념 Swift 5.1 부터 사용할 수 있는 기능 한번 원하는 기능 또는 연산을 하여(wrapped) 하여 보여줄 수 있도록 한다. Class, Struct, Enum 에서 @propertyWrapper 를 붙여 사용한다. propertyWrapper 를 정의하기 위해서는 wrappedValue 라는 프로퍼티를 정의해야 한다. Swift Docs의 예제: 12 이하의 값을 얻어오는 연산을 줄이기 위해 만들 수 있는 TwelveOrLess 라는 propertyWrapper 만드는 예시 @propertyWrapper struct TwelveOrLess { private var number = 0 var wrappedValue: Int { get { return number } .. 2022. 11. 12.
[Swift] @available(*, unavailable) 사용하기 10 little UIKit tips you should know 라는 글을 읽다가 @available(*, unavailable) 를 사용하는 코드를 여럿 보게 되었습니다. 왜 이걸 썼지? 했었는데 글 쓰신 분이 다음과 같이 남기셨습니다. 개인적인 선호라.. 그렇담 쓰면 어떻게 좋다는지 좀 더 자세히 보고자 글을 쓰게 되었습니다. Swift의 @available attribute의 특징 Swift에서 @ 표시를 사용해 1. declaration을 하거나 2. 타입에다가 특성을 부여해 추가적인 정보를 제공하는 attribute를 사용할 수 있습니다. 개발하면서 보게 되는 @availble, @discardableResult, @escaping 등이 이에 해당합니다. 이 중에 @available 은 특정 .. 2022. 2. 21.
[Swift] weak/unowned self는 언제 사용해야 할까? ARC에서 발생할 수 있는 Strong Reference Cycle로 인한 메모리 누수를 방지하기 위해 weak self 또는unowned self 를 사용하게 됩니다. 주로 클로저에서 weak self를 사용하고는 하는데 모든 클로저에 weak self를 사용해야 하는지, 그렇지 않다면 어떤 부분에 weak self를 사용해야 하는지 알아보고자 찾아본 내용을 정리하고자 글을 쓰게 되었습니다. Escaping, non escaping closure 여부 일반적으로 @escaping 키워드가 붙지 않은 클로저의 경우, 클로저의 scope 내에서 즉시 실행됩니다. 따라서 weak이나 unowned 를 사용할 필요가 없다고 하네요. 그러나 escaping closure의 경우 weak이나 unowned를 사용.. 2022. 2. 14.
[Swift] lazy 프로퍼티 알아보기 이번 글에서는 Swift의 lazy 프로퍼티에 대해 알아보겠습니다. lazy property란 무엇인가? lazy property, 정확히 지연 저장 프로퍼티(lazy stored property)는 처음 사용되기 전까지 초기값이 계산되지 않는 프로퍼티를 의미합니다. 간단히 말해, 내가 만든 프로퍼티를 사용하기 전까지 메모리에 올려두지 않겠다는 의미입니다. lazy property는 프로퍼티의 초기값이 초기화가 끝나기 전까지 알 수 없는 외부 값에 의존적인 경우 유용합니다. 또한 초기값이 복잡한 계산나 셋업이 필요하지만 필요할 때까지 실행되지 않아야 할 때에도 유용합니다. 주의할 점 lazy 키워드가 붙어있다고 해서 해당 프로퍼티가 한 번만 초기화된다는 것을 보장하는 것은 아닙니다. 만일 멀티스레드환경에.. 2021. 10. 26.
Key-Value Observing 사용하기 요즘 MVVM을 개인 프로젝트에 적용하다 보니 observable pattern을 익혀나가고 있습니다. 그러다 보니.. Key-Value Observing 방식이 어떻게 사용되는지 간단히 이해하고자 간단히 정리해보았습니다. Key - Value Observing 이란? Key-Value Observing(KVO)는 프로퍼티나 다른 객체의 변화를 객체에 알릴 수 있는 Cocoa programming pattern입니다. NSObject를 상속받은 클래스에서만 Key-Value Observing을 사용할 수 있습니다. 앞으로는 Key-Value Observing을 KVO로 부르겠습니다. KVO를 사용하기 위해 프로퍼티에 Annotation 붙이기 KVO는 ObjectiveC의 런타임에 의존하기 때문에, @o.. 2021. 8. 25.