일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 서체관리자
- SwiftUI Boolean 값
- addannotation
- 단일 책임원칙
- Protocol
- Timer
- UICollectionViewFlowLayout
- xcode로 날씨앱 만들기
- dispatchsource
- CLLocationManagerDelegate
- MKMapViewDelegate
- AnyObject
- swift
- weak var
- UIAlertAction
- Required Reason API
- 러닝타이머
- WeatherManager
- App Store Connect
- weatherKit
- MKMapItem
- CoreLocation
- 러닝기록앱
- 클로저의 캡슐화
- 한국어 개인정보처리방침
- 영문 개인정보처리방침
- Xcode
- RunningTimer
- Startign Assignments
- font book
- Today
- Total
VesselWheel
값 캡쳐하기 : capturing values 본문
import UIKit
// 값 캡쳐하기 : capturing values
// ㄴ 값을 가져와서 사용한다는 의미
var num = 10
// 클로저 함수 내부에서 밖에 있는 값을 참조하는 경우 값을 캡쳐함
// swift 의 경우 해당 변수의 주소를 가져와서 사용함
// 클로저 함수 내부에서 밖에 있는 변수의 값을 변경하면
// 클로저 함수 밖에 있는 변수의 값이 변경됨
let c = {
num += 1
print("check point #1 : \(num)")
}
c()
// 클로저 함수 내부에서 밖에 있는 변수의 값을 변경하면
// 클로저 함수 밖에 있는 변수의 값이 변경됨
print("check point #2 : \(num)")
print("-------------------------")
// Escapting Closure
// ㄴ 함수의 실행 흐름에서 벗어남
// 함수의 실행 흐름에서 벗어나지 않음
func performNonEscaping(closureFunc: () -> ()){
print("performNonEscaping 함수 시작")
closureFunc()
print("performNonEscaping 함수 종료")
}
// performNonEscaping 호출하기 + closure 작성
performNonEscaping {print("여기는 클로저함수임")}
print("---------Escapting Closure 1--------")
/*
performEscaping 함수가 종료되어도
클로저 함수는 메모리에 남아있다가 (3초 동안)
나중에 실행됨
*/
func performEscaping(closureFunc: @escaping () -> ()){
print("performEscaping1 함수 시작")
// parameter 로 전달된 closure 함수를 3 초 후에 호출함
DispatchQueue.main.asyncAfter(deadline: .now() + 3){
closureFunc()
}
print("performEscaping1 함수 종료")
}
// performEscaping 호출하기 + closure 작성하기
performEscaping {
print("여기는 클로저함수임")
}
print("---------Escapting Closure 2--------")
func performEscaping2(closureFunc: @escaping () -> ()){
print("performEscaping2 함수 시작")
var number = 10
// parameter 로 전달된 closure 함수를 3 초 후에 호출함
DispatchQueue.main.asyncAfter(deadline: .now() + 5){
closureFunc()
print("performEscaping2 함수의 지역변수 number :",number)
}
print("performEscaping2 함수 종료")
}
// performEscaping2 호출하기 + closure 작성하기
performEscaping2 {
print("여기는 클로저함수임")
}
'Xcode Study' 카테고리의 다른 글
Tuple Decomposition (0) | 2023.10.16 |
---|---|
tuple (0) | 2023.10.16 |
Closure (0) | 2023.10.16 |
내부 함수 : nested functions (0) | 2023.10.16 |
function type - 함수의 자료형(2/2) (0) | 2023.10.16 |