반응형

iOS/Swift 5

swift. 중첩 클로져(nested closure)에서 weak self 사용?

weak self weak self 는 순환 참조(strong reference cycle)를 방지하기 위해 사용한다. 일반적으로는 escaping closure에서 self를 사용할 때, 캡쳐리스트에 선언해두고 사용한다. escaping closure에서 self를 캡쳐하면 strong reference cycle(Automatic Reference Counting in Swift Docs)이 발생하기 쉽기 때문이다. class Fetcher { var x: String? func callFetch() { self.fetchSomething { [weak self] error in self?.x = "finished" print("error : \(error)") } } func fetchSometh..

iOS/Swift 2022.04.27

swift final class. final 키워드

어느 날 PR 리뷰에 이런 코멘트가 달렸다. class newClass { > >final 키워드를 붙여주세요. 새로 생성한 class는 한 곳에서 단 한가지 용도로 사용되었다. 사실 final을 생각하면서 붙이지 않았다. 그래서 생각해보기로 했다. swift org에서 final을 이렇게 설명하고 있다. You can prevent a method, property, or subscript from being overridden by marking it as final. final을 지정하면, overriding을 컴파일 단계에서 막는다. class 에 final을 붙이면 해당 클래스는 subclassing 할 수 없다. 상속 불가. override 불가. 상속과 method override를 막는 효..

iOS/Swift 2022.04.22

Swift. Ambiguous use of 'init'

아래와 같은 형태로 코드를 작성했다. 그런데 계속 에러가 뜨면서 빌드가 안됬다. class URLProviderFactory { private let url: URL init(_ url: URL) { self.url = url super.init() } .... } class A { private func makeURLProvider(_ url: URL) { let urlProvider = url.map(URLProviderFacoty.init) } .... } Error : Ambiguous use of 'init' 말그대로 init을 이상하게(모호하게) 썼다는 뜻이다. 어떻게 해도 저 에러가 뜨길래.... struct가 아닌 class로 구현한 것에 init을 적용해서 생긴 이슈라고 생각했다.(잘못된..

iOS/Swift 2022.04.21

RxSwift 는? Reactive 프로그래밍을 알아보자 1

이전에 Combine 에 대해 알아보면서 RxSwift를 언급했다. Reactive Programming 이라는 사실만 알 뿐, 실제로 사용해서 개발한 경험은 없다. 결국엔 iOS 네이티브를 한 번 랩핑해놓은 서드파티 라이브러리 라고 생각했기 때문이었다. 비동기 처리를 위해 거대한 서드파티 라이브러리를 개발에 포함시키고 싶지 않았다. Apple에서 정식으로 지원하는 것도 아니기에 굳이 위험부담을 감수할 필요가 없었다. 그런데 이번에 합류한 조직에서 RxSwift를 적극 사용한다고 한다. 그래서 RxSwift와 조금 친해져보려고 책을 펼쳤다. RxSwift: Reactive Programing with Swift RxSwift: Reactive Programming with Swift Leverage th..

iOS/Swift 2022.02.04

Combine은 무엇인가.(비동기 연산 처리 지원 프레임워크)

요즘 iOS 개발, 그 중에서도 Swift 언어로 개발하는 곳에는 Combine이 핫한 이슈인 것 같다. 여기저기서 "이제 combine을 적용해야 하는데...", "combine으로 넘어가야겠어." 라는 소리가 들린다. 어렴풋이 저기 어딘가 있는 Combine을 한번 알아봤다. WWDC2019에서 처음 소개된 Combine은 iOS13버전 부터 사용이 가능하다. 아래는 Apple Developer 사이트에서 제공하는 Combine 에 대한 설명이다. 가져와서 한글로 옮겨봤다. Combine event-processing operator (이벤트 처리 연산자)를 결합(combining)해서 비동기 이벤트를 입맛에 맞게 핸들링하도록 하는 프레임워크. iOS 13.0+ iPadOS 13.0+ 요약 Combi..

iOS/Swift 2022.01.20
반응형