클로저

Swift

[Swift] 클로저의 캡처리스트('[]')

오늘은 Swift의 클로저와 캡처리스트에 대해 이야기해보려 합니다. 특히 클로저에서 값 타입과 참조 타입의 캡처 방식과 순환 참조 문제를 해결하는 캡처리스트의 중요성에 대해 집중적으로 다루겠습니다. 클로저의 기본 캡처 방식 Swift에서 클로저는 기본적으로 외부의 변수를 캡처할 때 참조 타입으로 캡처합니다. 즉, 값 타입이든 참조 타입이든 상관없이 클로저 내부에서는 모두 참조로 취급됩니다. 이는 매우 편리한 기능이지만, 때로는 메모리 관리나 예상치 못한 동작을 야기할 수 있는 문제점을 내포하고 있습니다. 캡처리스트와 값 타입의 복사 클로저에서 캡처리스트를 사용하면, 이야기가 조금 달라집니다. 캡처리스트를 사용하면 값 타입을 복사해서 가져올 수 있습니다. 이는 값 타입이 원래 값을 유지하면서 클로저 내부에..

Swift

[Swift] 클로저와 NotificationCenter를 활용한 상태 변화 알리기(View Controller 간의 상호작용)

안녕하세요, 지난 포스트에서는 Delegate 패턴을 이용한 뷰 간의 상태 변화 알리기에 대해 알아보았습니다. 이번에는 Delegate 패턴에 이어서 클로저와 NotificationCenter를 활용하여 뷰 간의 상태 변화를 알리는 방법에 대해 알아보겠습니다. 1. 클로저를 활용한 상태 변화 알리기 Swift에서 클로저는 자유 변수와 관련있는 코드 블록입니다. 함수처럼 이름이 없으며, 독립적으로 사용할 수 있습니다. 클로저를 활용하면 상태 변화를 효율적으로 관리할 수 있습니다. class FirstViewController: UIViewController { var myClosure: (() -> Void)? func myFunction() { myClosure?() } } class SecondView..

Swift

[Swift] 클로저의 다양한 표현식

클로저는 스위프트에서 거의 공기 같은 존재여서 인터넷에 깔끔하게 정리를 잘한 곳이 많기에 여기에는 내가 헷갈리기 쉬운 것들을 기재해보려고 한다. 1. 클로저 간소화 클로저에는 여러 가지 방법으로 표현을 간소화할 수 있습니다. 그래서 오히려 때로는 헷갈리는 경우가 많습니다. 아래의 코드는 클로저의 여러 표현법을 한 번에 비교하기 쉽게 모아두었습니다. var result: Int func calculate(a: Int, b: Int, method: (Int, Int) -> Int) -> Int { return method(a, b) } // 후행 클로저 - 마지막 인자가 함수이면 이렇게 밖으로 뺴서 클로저를 보기좋게 만들 수 도있습니다. result = calculate(a: 10, b: 10) { (lef..

웅이코
'클로저' 태그의 글 목록