본문 바로가기

전체 글42

[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.
개발환경 설정(for silicon mac) 개인장비를 교체하면서 참고용으로 어떻게 개발환경을 설정해뒀는지 기록해두었습니다. 1. homebrew 설치 등 homebrew 설치 /bin/bash -c "$(curl -fsSL )" echo '# Set PATH, MANPATH, etc., for Homebrew.' >> /Users//.zprofile echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users//.zprofile eval "$(/opt/homebrew/bin/brew shellenv)" Chrome 설치 brew install --cask google-chrome iterm2 설치 brew install iterm2 2. 터미널 세팅 프롬프트에 hostNam.. 2022. 10. 22.
[UIView] isExclusiveTouch로 중복터치를 막아보자 최근에 일을 하면서 화면에 버튼이 여러 개 있을 때 여러 버튼을 동시 클릭하면 각 버튼이 연결하는 화면들이 중복으로 열리는, 중복 클릭으로 인한 이슈가 나왔습니다. 해당 이슈를 isExclusiveTouch 라는 속성을 사용하여 해결하셨길래 공부해보고자 글을 남깁니다. isExclusiveTouch 공식 문서에는 다음처럼 적혀 있습니다. A Boolean value that indicates whether the receiver handles touch events exclusively.터치 이벤트를 독점적으로 받을지 여부를 조정할 수 있는 속성입니다. 해당 속성은 UIView의 인스턴스 프로퍼티로 저장되어 있으며 해당 프로퍼티의 값을 변경하지 않을 경우 기본값으로 false 로 들어갑니다. isExcl.. 2022. 8. 8.
[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.
[RxSwift] Observable, Observer, Subject, Disposing 개념 Observable Observable 타입은 비동기적으로 다음과 같은 세 가지 타입의 이벤트를 방출(emit)합니다. next : 최신(또는 다음) 데이터 값을 들고 있는 이벤트를 의미합니다. 이 경우 Observer가 값을 받을 수 있게 됩니다. completed : 성공적으로 이벤트 시퀀스가 끝났을 때. 이 경우 해당 시퀀스는 terminate됩니다. error : 해당 Observable이 에러가 발생한 경우, 해당 시퀀스는 terminate됩니다. 참고 - RxSwift Event관련 소스코드 /// Represents a sequence event. /// /// Sequence grammar: /// **next\* (error | completed)** public enum Event { .. 2021. 12. 29.