목록iOS (106)
大器晩成
RxSwift를 사용하다 보면, 클로저를 많이 사용하게 됩니다.이때, 강한 참조 사이클이 발생하게 되어, guard let self = self else { return } 구문을 많이 쓰게 되는데, 이 구문을 왜 쓰고, 왜 가능한지 정리해보려고 합니다. 우선 RxSwift에서 강한 참조 사이클을 방지하기 위해 bind(with:)을 많이 사용하는데 내부 구조를 보면 다음과 같습니다. public func bind( with object: Object, onNext: @escaping (Object, Element) -> Void ) -> Disposable { self.subscribe(onNext: { [weak object] in g..
에러가 발생하는 경우, 에러를 따로 외부로 던지는 것이 아니라, 리턴 타입 자체를 Result 타입으로 구현해서 함수 실행의 성공과 실패의 정보를 담아서 반환합니다.enum ResultSuccess, Failure> where Failure : Error, Success : ~CopyableReuslt 타입은 열거형으로 구성되어있으며, sucess(연관값)와 failure(연관값)로 구분됩니다.enum PayslipError: Error { case tooMany case tooSmall}func getPayslip(money: Int) -> Result { if money >= 3_000_000 && money 에러 처리보다 깔끔하게 코드를 구성할 수 있습니다.get() 메서드..
제네릭 코드 (Generic code)는 정의한 요구사항에 따라 모든 타입에서 동작할 수 있는 유연하고 재사용 가능한 함수와 타입을 작성할 수 있습니다. 중복을 피하고 명확하고 추상적인 방식으로 의도를 표현하는 코드를 작성할 수 있습니다.제네릭은 Swift의 강력한 특징 중 하나이고 Swift 표준 라이브러리 대부분은 제네릭 코드로 되어 있습니다. 예를 들어 Swift의 Array와 Dictionary 타입은 둘 다 제네릭 컬렉션입니다. Int 값을 가진 배열, 또는 String 값을 가진 배열 또는 실제로 Swift에서 생성될 수 있는 다른 모든 타입에 대한 배열을 생성할 수 있습니다. 마찬가지로 모든 지정된 타입의 값을 저장하기 위한 딕셔너리를 생성할 수 있고 해당 타입에 대한 제한은 없습니다Appl..
에러 던지기함수나 메서드는 오류 객체를 외부로 던질 수 있다는 것을 컴파일러에 알려주기 위해 정의 구문을 작성할 때 throws 키워드를 추가합니다.func canThrowErrors() throws -> Stringfunc cannotThrowErrors() -> String에러가 발생할 수 있는 함수, 메서드, 또는 초기화 구문을 나타내기 위해 함수의 선언 중 파라미터 뒤에 throws 키워드를 작성합니다. throws로 표시된 함수는 던지기 함수 라고 합니다. 함수에 반환 타입이 지정되어 있으면 throws 키워드는 반환 화살표 (->) 전에 작성합니다. 에러의 처리 과정1. 에러의 정의 (에러 프로토콜을 채택해야 함)enum PayslipError: Error { case tooMany ..