반응형

Old_SWIFT(221012) 68

Closure에 대하여 - 2 (값 캡쳐, 캡쳐 리스트, ARC, 강한순환참조, 약한순환참조)

안녕하세요. KataRN입니다. 저번 글에 이어서 작성해보도록 하겠습니다. 참조 글 - https://babbab2.tistory.com/83?category=828998 너무 좋은 글이라 거의 따라썼습니다...ㅠㅠ 1번글 https://katarnios.tistory.com/84 Closure에 대하여 - 1 (Trailing Closure, @autoclosure , @escaping) 안녕하세요. KataRN입니다. 오늘은 Closure에 대해 알아보겠습니다. 📍 Closure란? func으로 선언하는 것이 아닌 함수를 변수에 선언하는 형태 공식 문서에는 클로저는 어떤 상수나 변수의 참조를 캡 katarnios.tistory.com 📍 값 캡쳐 func goKata() { var message = ..

Closure에 대하여 - 1 (Trailing Closure, @autoclosure , @escaping)

안녕하세요. KataRN입니다. 오늘은 Closure에 대해 알아보겠습니다. 📍 Closure란? func으로 선언하는 것이 아닌 함수를 변수에 선언하는 형태 공식 문서에는 클로저는 어떤 상수나 변수의 참조를 캡쳐(capture)해 저장할 수 있다.라고 정의되어있다. 클로저는 다음 세 가지 형태 중 하나를 갖습니다. 전역 함수 : 이름이 있고 어떤 값도 캡쳐하지 않는 클로저 중첩 함수 : 이름이 있고 관련한 함수로 부터 값을 캡쳐 할 수 있는 클로저 클로저 표현 : 경량화 된 문법으로 쓰여지고 관련된 문맥(context)으로부터 값을 캡쳐할 수 있는 이름이 없는 클로저 Closure는 익명함수이면서 1급객체 함수의 특성을 갖고있습니다. 📢 1급객체함수란? 더보기 1. 객체가 런타임에도 생성 가능하다. 2..

Codable에 대하여(Decodable, Encodable, CodingKey)

안녕하세요. KataRN입니다. 오늘은 Codable에 대해 알아보겠습니다. 애플 공식 문서부터 보시죠. Declaration을 보시면... typealias Codable = Decodable & Encodable 결론이 났군요... Codable은 뭐다? Decodable + Encodable !!! 그렇습니다. Decodable와 Encodable을 합친게 Codable입니다. Encodable & Decodable 프로토콜을 준수하는 프로토콜입니다. Struct, Class, Enum 모두 Codable을 채택할 수 있습니다. 그러면 Encoding와 Decoding를 알아야겠군요... 1. Encoding - 자신을 외부표현(external representation)으로 인코딩 할 수 있는 타..

Result 타입에 대하여...

안녕하세요. KataRN입니다. 오늘은 Result 타입에 대해 알아보겠습니다. Result 타입이 나오게 된 이유를 설명하기에 앞서 Error타입을 선행학습하시면 도움이 될것 같습니다. https://katarnios.tistory.com/80 Error타입부터 try, do, catch까지...(모든건 Result 타입을 위해) 안녕하세요. KataRN입니다. 오늘은 Error 처리부터 try, do, catch에 대하여 알아보겠습니다. (Result타입에 대해 글을 쓰기전에 선행학습이 필요하다 판단하여 글을 쓰게되었습니다.) Swift에서 Error는 Erro katarnios.tistory.com 작업(Task) 중에는 실패할 수 있는 작업이 있습니다. 디스크에 파일을 쓰거나, API를 호출해 네..

Error타입부터 try, do, catch까지...(모든건 Result 타입을 위해)

안녕하세요. KataRN입니다. 오늘은 Error 처리부터 try, do, catch에 대하여 알아보겠습니다. (Result타입에 대해 글을 쓰기전에 선행학습이 필요하다 판단하여 글을 쓰게되었습니다.) Swift에서 Error는 Error 프로토콜을 채용한 타입의 값으로 나타냅니다. 보시면 공식문서에도 적혀있듯이 Error 프로토콜은 요구되는게 하나도 없습니다. 우선 에러타입을 하나 만들겠습니다. enum DivisionError: Error { case dividedByZero } 그리고 Error를 사용하는 방법에 대해 알려드립니다. throw, throws가 있습니다. 두개는 다릅니다. 📍 throw 에러를 발생시키는 키워드입니다.(에러를 던진다 라고 표현합니다.) throw DivisionErro..

Property Wrapper에 대하여

안녕하세요. KataRN입니다. 오늘은 Property Wrapper에 대해 알아보겠습니다. 솔직히 너무 어렵네요 ㅠㅠ 최대한 풀어서 써보겠습니다... 우선 Property Wrapper의 정의는? - 어떤 값이 있으면 이 값을 한 번 감싸서 저장을 위한 로직과 얻어오기 위한 로직을 어느정도 분리해서 반복을 줄여줄 수 있는 방법을 제공하는 속성입니다. 하.. 어렵다 어려워... 다른분들의 글과 똑같지만 다르게...(창의성이 부족하여... 참고하여...)... 예를 들어보겠습니다. 이마트에서 아이스크림을 팝니다. 행사를 해서 천원 이상은 무조건 천원이라고 하네요. 그럼 500원은? 500원이겠죠? 1500은? 1000원! 이걸 코드로 표현하면 아래와 같습니다. struct Emart { //1. 최대 금액..

함수의 종류(인스턴스 메서드, 타입 메서드, instance method, type method)

안녕하세요. KataRN입니다. 오늘은 함수의 종류에 대해 알아보겠습니다. Swift에서 함수는 아래처럼 3가지로 나뉩니다. Instance Method Type Method Static Method Class Method class ExampleClass{ func instanceMethod(){} // 인스턴스 메서드 class func classMethod(){} // 클래스 메서드 (타입 메서드) static func staticMethod(){} // 스태틱 메서드 (타입 메서드) } 보통 저희가 쓰던 함수가 인스턴스 메서드, 앞에 class, static를 붙인 아이들이 타입 메서드입니다. 인스턴스 메서드 (Instance Method) 특정 타입의 인스턴스(클래스, 구조체, 열거형...) 에..

Mutating에 대하여...

안녕하세요. KataRN입니다. 오늘은 Mutating에 대해 알아보겠습니다. 우선순위 힙에 대해 공부하다보니 Mutating가 보여서 정리하게되었습니다. - mutating 클래스는 reference 타입이고 struct와 enum 는 value type입니다. 값 타입의 속성은 기본적으로 인스턴스 메서드 내에서 수정할 수 없습니다. 만약 수정해야하는 경우 mutating을 붙여주면 됩니다. mutating을 선언한 메서드는 메서드 내에서 프로퍼티를 변경할 수 있고, 메서드가 종료될 때 변경한 모든 내용을 원래 struct에 다시 기록합니다. 또한 메서드는 self property에 새 인스턴스를 할당할 수도 있습니다. mutating 키워드는 해당 메서드가 호출된다면 실제 복사를 해야한다고 알려주는 ..

멀티 스레딩을 위한 API(Operation Queue, NSOperation Queue)

안녕하세요. KataRN입니다. 오늘은 OperationQueue에 대해 알아보겠습니다. (NSOperation, NSOperationQueue는 Object-C 클래스이고, Swift는 앞에 NS 접두사를 떼면 됩니다.) OperationQueue는 Operation들의 스케쥴링과 실행을 담당하게 됩니다. Operation이 담겨 Queue처럼 FIFO으로 동작하게 됩니다. 더 높은 우선순위의 작업이 들어오게 되면 낮은 우선순위보다 빠르게 실행되는 우선순위큐 형식입니다. 1. addDependency(_:) 다른 Operation에 Dependency를 갖습니다. 현재 operation보다 매개변수의 #Operation#이 더 먼저 완료되어야 하는경우 추가합니다. 이는 작업 큐에 들어가 있을 때 실행됩..

멀티 스레딩을 위한 API(GCD Queue)

안녕하세요. KataRN입니다. 오늘은 GCD Queue에 대해 작성하려고합니다. GCD (Grand Central Dispatch)는 멀티 코어 프로세서 시스템에 대한 응용 프로그램 지원을 최적화하기 위해 Apple에서 개발한 기술입니다. 애플 공식 문서에서도 Thread 클래스 대신 GCD 사용을 권장한다고 합니다. GCD는 백그라운드에서 스레드를 관리하면서 동시적으로 작업을 실행시키는 저수준 API를 제공하는 라이브러리입니다. Dispatch Queues: 디스패치 큐는 FIFO 순서로 작업을 실행시키는 역할을 담당 Serial Dispatch Queue: 시리얼 디스패치 큐는 한번에 한 작업만 실행 Concurrent Dispatch Queue: 컨커런트 디스패치 큐는 시작한 작업이 끝나는것을 기..

반응형