목록2025/02 (16)
大器晩成
[@escaping]일반적으로 함수의 실행이 종료되면 파라미터로 쓰이는 클로저도 삭제됩니다.함수에 인수로 전달하지만, 함수가 반환된 후 호출되는 클로저 함수를 탈출(escape)한다라고 말합니다.@escaping 키워드는 클로저를 제거하기 않고 함수에서 탈출시키도록 하며, 클로저가 함수의 실행 흐름을(스택프레임)을 벗어날 수 있도록 합니다. non - escaping clousre함수내부에서, 단순하게 실행하고 종료할 때 (클로저를 힙에 저장할 필요가 없습니다.)func hello(clousre: (String) -> ()) { let msg = "Hello Swift" clousre(msg) }hello { msg in print(msg)}일반적으로 함수의 실행이 종료되..
스택에 저장되는 값(value) 타입이 있고, 힙의 저장되는 참조(Reference) 타입이 있습니다.스위프트의 기본 타입(Int, String, Double..)이나, 튜플 구조체 열거형 등이 값 타입에 해당되며, 스택의 스코프가 종료되면 메모리에서 자동으로 제거됩니다.클래스나, 클로저는 참조 타입에 해당되며, 실질적인 값은 힙에 저장되며, 스택에서는 힙의 주소를 저장하고 있습니다. 참조타입의 메모리 관리는 ARC를 통해 메모리 관리를 하고 있습니다. 캡처 값클로저는 컨텍스트에서 상수와 변수를 캡처할 수 있습니다. 그러면 클로저는 상수와 변수를 정의한 범위가 더 이상 존재하지 않더라도, 해당 상수와 변수의 값을 참조하고 수정할 수 있습니다.스위프트에서 값을 캡처할 수 있는 가장 간단한 클로저 형태는 중..
[문법 최적화(간소화)]문맥상에서 파라미터와 리턴 벨류 타입 추론 (Inferring Type Form Context)싱글 익스프레션인 경우(한 줄) return 키워드 생략 가능 (Implicit Returns from Single-Expression Closures)아규먼트 이름 축약 (Shorthand Argument Names) -> $0, $1, $2 등트레일링 클로저: 함수의 마지막 아규먼트(전달 인자)로 클로저가 전달되는 경우, 소괄호 생략 가능 트레일링 클로저//Apple 공식문서func someFunctionThatTakesAClosure(closure: () -> Void) { // function body goes here closure()}// Here's how you..
일급객체(First-class Object)란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.Switf의 클로저는 다른 프로그래밍 언어에서 클로저, 익명 함수, lambda(파이썬), Block(C언어 )과 유사합니다. 클로저의 기능은 함수와 동일하나, 형태가 조금 다릅니다.함수: 이름이 있는 코드 묶음 -> 다른 코드가 함수 이름으로 호출 클로저: 이름이 없는 코드 묶음 -> 굳이 이름이 없어도 호출할 수 있는 형태로 사용 가능//함수 형태func sayHello() -> String { return ...}//클로저 형태{ () -> String in return ...}동일한 기능의 함수와, 클로저가 있습니다. 클로저는 이름이 없는 듯이 함수의 func sayHello..