분류 전체보기 (124) 썸네일형 리스트형 Key-Value Observing Key-Value Observing은 객체가 다른 객체의 속성에 대한 변경 사항을 알림 받을 수 있도록 하는 메커니즘 KVO를 크게 Observer를 등록하고, Observer를 통해 변경된 값을 전달받고, 더이상 필요하지 않을때 Observer를 해제하는 3가지로 나눌 수 있습니다. 간단한 그림을 통해서 볼게요. STOP 할때까지 그냥 쭉 느낌만 볼게요 Person과 Account 객체가 있습니다. 먼저 Observer를 등록하는 방법은 Person은 관찰된 키 경로마다 한 번씩 AddObserver:forKeyPath:options:context:message를 Account에 보내 자신을 관찰자로 명명합니다. 값이 변경될때마다 값의 변경 알림을 받기 위해서 Person은 Observer에observ.. Key-Value Coding SwiftUI 로 개발을 하다보면 \.self 이런 표현식을 접하게 되는데, 그냥 쓰려니까 도저히 이해가 되지 않아서 하는 정리 일단 차근차근 시작해봅시다. 먼저 \. (백슬래쉬 닷)은 Key-Path String Expression 이라고 함. Key-Path Expression 에 대한 문서인데 https://docs.swift.org/swift-book/documentation/the-swift-programming-language/expressions/#Key-Path-String-Expression 처음 설명이 Objective-C에서 속성을 참조하는 데 사용되는 문자열에 액세스 해서 KVC(Key-Value Coding), KVO(Key-Value observing) API에서 사용할 수 있다.. 탈출 클로저 (Escaping Closures) 탈출 클로저 (Escaping Closures) 클로저가 함수에 인자로 전달되지만 함수의 반환 후 호출되는 클로저를 함수를 탈출 (escape)한다고 합니다. 클로저를 파라미터로 갖는 함수를 선언할때 파라미터 타입 전에 “@escaping”을 작성해서 탈출 클로저를 작성합니다. 클로저가 탈출할 수 있는 한가지 방법은 함수 바깥에 정의된 변수에 저장되는 것인데, 예를 들어서 비동기적인 작업을 하는 대부분의 함수는 completion handler로 클로저를 사용하게 되는데 이 함수는 작업을 시작한 후 반환되긴 하지만 작업의 완료까지 클로저가 호출되지 않습니다. 클로저를 나중에 호출하기 위해 클로저는 탈출해야 합니다. someFunctionWithEscapingClosure(_:) 함수는 인자로 클로저를 가.. 클로저는 참조 타입 (Closures Are Reference Types) 클로저는 참조 타입 (Closures Are Reference Types) https://leeyuno.tistory.com/127 Closures - Capturing Values (캡쳐값) Capturing Values (캡쳐값) 클로저는 클로저가 포함된 컨텍스트에서 정의된 값을 캡쳐해서 사용할 수 있습니다. 값을 캡쳐하면 어떻게되냐?? 컨텍스트가 사라져도 캡쳐로 참조한 값을 사용할 수 있습 leeyuno.tistory.com 위에서 사용한 에제인 incrementBySeven과 incrementByTen은 상수이지만 상수가 참조하는 클로저는 캡쳐한 runningTotal 변수를 계속 증가시킬 수 있었습니다. 이건 함수와 클로저가 참조 타입이기 때문이라고 했었죠. 함수나 클로저를 상수나 변수에 할당하.. Error Finding App Store Connect Credentials Archive 시 발생하는 Error Finding App Store Connect Credentials 해결방안 Xcode 설정에서 애플 아이디 다시 로그인 후 Xcode 재실행 Closures - Capturing Values (캡쳐값) Capturing Values (캡쳐값) 클로저는 클로저가 포함된 컨텍스트에서 정의된 값을 캡쳐해서 사용할 수 있습니다. 값을 캡쳐하면 어떻게되냐?? 컨텍스트가 사라져도 캡쳐로 참조한 값을 사용할 수 있습니다. 예제로 볼게요. 중첩함수를 이용할건데 중첩 함수는 외부 컨텍스트의 인수나 정의된 값을 캡쳐할 수 있습니다. 예제를 보면 incrementer 라는 중첩함수는 어떤 값을 캡쳐한걸까요?? 중첩함수에서 외부 컨텍스트의 값을 캡쳐했을테니, runningTotal과 amount 라는 2개의 값을 캡쳐하고 있어요 incrementer 함수는 runningTotal에 amount를 더해서 반환하는 간단한 함수이지만 외부 컨텍스트가 없이 존재한다면… 말이안되죠 incrementer 함수는 파라미터가 없고 외부 .. Trailing Closures (후행 클로저) 후행 클로저는 말그대로 뒤에 행동하는 클로저 입니다. 이게 무슨 말이냐면 함수의 마지막 인수로 클로저 표현식이 사용되는 경우 후행 클로저라고 하고 후행 클로저는 특별하게 표현할 수 있는 방법이 있습니다. 클로저가 후행 클로저인 경우 편리하게 표현할 수 있는 방법! 후행 클로저는 함수의 인수지만 함수 소괄호 다음에 작성할 수 있습니다. 후행 클로저 구문이 여러개 일때 첫번째 후행 클로저는 인수명을 생략할 수 있습니다. 단일 후행 클로저를 사용하는 예제입니다. func someFunctionThatTakesAClosure(closure: () -> Void) { // function body goes here } // 후행 클로저 없이 이 함수를 호출하는 방법 someFunctionThatTakesAClos.. Closures (클로저) - Closure Expressions 클로저란 이름이 있는 함수를 생성하지 않고 함께 실행할 수 있는 코드 그룹입니다. 클로저는 코드에 전달되어 사용될 수 있는 자체적인 기능 블록입니다. 이건 나중에.... 클로저는 상수와 변수가 정의된 컨텍스트에서 참조를 캡처하고 저장할 수 있습니다. 이러한 상수와 변수를 폐쇄 (closing over) 라고 합니다. Swift는 캡처의 모든 메모리 관리를 처리합니다. NOTE 캡쳐에 대해서는 다음에 Capturing Values에서 추가적으로 다루도록 하겠습니다. 클로저는 아래 3가지 형태 중 하나를 취합니다. 전역 함수는 이름을 가지고 어떠한 값도 캡쳐하지 않는 함수 중첩 함수는 이름을 가지고 둘러싼 함수로 부터 값을 캡쳐할 수 있는 클로저 클로저 표현식은 주변 컨텍스트에서 값을 캡처할 수 있는 경량 .. 이전 1 2 3 4 ··· 16 다음