-
COW(Copy-on-Write) 를 알아보자iOS/🟠 Swift 2022. 12. 29. 23:34
Copy-on-Write 값을 실제로 쓸 때 (on-write) 복사한다(copy) 실제 복사를 늦추어 힙 할당을 줄이는 최적화 방법 Usecases 1. Swift Collection : Array, Dictionary, String 등 2. 3-word 가 넘는 struct 를 Protocol 타입으로 다룰 때 값 타입과 힙 영역의 관계 Array 나 String 은 스위프트에서 값 타입 입니다. 값 타입 인스턴스는 기본적으로 스택 영역을 할당하고 그 곳에 값을 초기화하는 것으로 알려져 있습니다. 그러면 값 타입과 힙 영역은 어떤 관련이 있을까요? Arrray, String 등 Collection 을 활용하는 특정 값 타입들은 런타임에 element 의 추가, 삭제가 가능하기 때문에힙 영역 데이터를 ..
-
[Swift] Swift 5.8 CHANGELOGiOS/🟠 Swift 2022. 11. 27. 02:28
SE-0365 이제 클로저 내부에서 [weak self] 로 캡처한 self 를 언래핑한 이후에는 self 를 생략해도 됩니다. class ViewController { let button: Button func setup() { button.tapHandler = { [weak self] in guard let self else { return } dismiss() // refers to `self.dismiss()` } } func dismiss() { ... } } Swift 5 에서는 non-escaping 클로저에서 [weak self] 이후 self 를 명시적으로 언급하지 않아도 되었지만, Swift 6 버전부터는 더 이상 허용되지 않습니다. self 를 언래핑하거나, [unowned self..
-
[Swift] didSet 이 호출되는 쓰레드는?iOS/🟠 Swift 2022. 11. 6. 20:14
결론 - setter 가 호출되는 쓰레드에서 didSet 이 호출된다. - setter 가 내부 코드에서 마지막에 didSet 을 호출하는 것으로 보인다. - setter 는 값 설정 코드가 실행된 것이다. (예시: text = "abc") - setter 가 만약 main thread 이 아닌 쓰레드 에서 실행되었다면, didSet 도 해당 쓰레드 에서 실행된다. 그래서? - didSet 내부에 UI 설정 코드를 넣고 실행하면 Main Thread Checker 에 의해 경고메시지를 만날 수 있다. - UI 작업은 main thread 에서 실행되어야하며, didSet 은 main thread 에서 실행되는 것을 보장하지 않기 때문이다. - 이 때는 해당 코드가 메인쓰레드에서 실행되도록 보장하거나, p..
-
[iOS] UITextField 에 붙여넣기를 방지하기iOS/🤖 App 2022. 11. 3. 23:26
숫자만 입력해야하는 필드가 있다고 가정해보자. 이 때, 붙여넣기를 통해 문자가 입력되는 것도 방지해야 할 것이다. 붙여넣기로 문자가 입력된 이후에 감지해서 제거하는 방법도 있겠지만, 붙여넣기 자체를 아예 불가능하게 만들 수도 있다. UITextField 에 붙여넣기를 방지해보자. 사용자는 UITextField 를 탭하여 아래와 같은 UI 를 화면에 띄울 수 있다. 이것을 editing menu 라고 부른다. 그리고 editing menu 가 등장하기 직전에 호출되는 메서드가 있다. canPerformAction(_:withSender:) 이다. 이 메서드는 UIResponder 에 정의되어있다. UITextField 는 UIResponder 를 상속한 클래스이므로, 사용자가 TextField 를 탭할 때..
-
travel 과 trip 의 차이General/🗣 영어회화 2022. 11. 1. 21:42
정리 travel : 여행이라는 개념 그 자체 - I like traveling by myself. (나는 혼자 여행하는 것을 좋아합니다.) trip : 하나하나의 그 여행 - go on a trip - take a trip - we took a trip to new york last weekend. (우리는 저번주에 뉴욕을 여행했습니다.) 예제 이번 주말에 가족이랑 여행가요. - I’m taking a trip with my family this weekend. 나는 올해에 여행을 세 번밖에 못했어요. - I took only 3 trips this year. 나는 짧게 자주 여행하는 것을 좋아한다. - I enjoy taking frequent short trips by myself. - I enjo..