Callback

Joohyun·2022년 3월 8일
0

Callbacks

  • 코드를 통해 직접적으로 함수를 호출하는 것이 아닌, 터치 등 특정 이벤트 발생 시 함수가 호출되는 것

1. property : () -> ()

// 공의 위치를 굴뚝으로 이동시킨다.
func dropBall() {
	circle.position = funnel.position
}

  • onTapped의 타입: () -> () (파라미터 X, 리턴 X 함수)
  • dropBall()의 경우 파라미터와 리턴값이 없으므로 onTapped 타입과 동일
  • dropBall()을 콜백 함수로 할당 가능
// 굴뚝을 터치 시 dropBall() 함수 실행
// funnel.onTapped = dropBall() (X) 
funnel.onTapped = dropBall

< control modifier >

  • public : API 사용자에 의해 접근이 가능한 property
  • private : API 사용자에 의한 접근 차단

2. property : (Shape) -> ()

// 공이 다른 물체와 충돌 시 다른 물체의 색을 초록색으로 변경
func ballCollided(with otherShape: Shape) {
	otherShape.fillColor = .green
}

  • onCollision의 타입: (Shape) -> () (파라미터: Shape 타입, 리턴 X 함수)
  • ballCollided(with:)의 경우 Shape 타입의 파라미터를 가지므로 onCollision 타입과 동일
  • ballCollided(with:)을 콜백 함수로 할당 가능
// 충돌한 물체가 파라미터로 입력된다.
// ball.onCollision = ballCollided 가능하지만 권장하지 않음
ball.onCollision = ballCollided(with:)

3. function parameter : () -> ()

  • 파라미터 completion의 타입: () -> ()
  • presentAlert(text:completion:) 실행 -> 새로운 함수 호출
scene.presentAlert(text: "You won!", completion: alertDismissed)

# 알람이 울린 후, 아무 일도 일어나지 않음
func alertDismissed() {
}
profile
IOS Developer

0개의 댓글