BMI판정 앱(4)

저번에 WebKit 프레임워크 없었던 문제를 해결해보자.

+ 버튼 누르기

웹킷 프레임워크 추가하기
(도움 주신 한성현 교수님께 감사합니다.)

URL 구조체는 이곳 저곳에서 굉장히 많이 사용된다.
(참고: https://developer.apple.com/documentation/foundation/url)
외부 앱 여는 부분은 기말 프로젝트 때 활용해봐도 재밌을 것 같다.


->


URL형이 아니고, 왜 Optional URL형인가?
-> Failable Initializer를 거쳤기 때문이다.



viewDidLoad()는 화면의 뷰가 메모리에 처음 로드된 직후 실행

회전 시 레이아웃 깨지는 문제 해결하기

동영상 플레이어 리팩토링하기(후행 클로저)


present(playerViewController, animated: true)
player.play()
// 화면 표시 요청 직후 재생 시작됨
// 애니메이션 끝나기 전에 play가 실행될 수 있음
self.present(playerViewController, animated: true)
player.play()
// 위와 동일한 동작 (self만 추가됨)
// 애니메이션 완료 전 재생될 가능성 있음
self.present(playerViewController, animated: true) {
player.play()
}
// 화면 표시 애니메이션이 모두 끝난 후 재생 시작
// 가장 자연스럽고 권장되는 방식!!
클로저
func add(x: Int, y: Int) -> Int {
return(x+y)
}
print(add(x:10, y:20))
let add1 = {(x: Int, y: Int) -> Int in
return(x+y)
}
print(add1(10, 20))
클로저를 사용할 경우 argument lable을 작성하지 않아도 된다.

// 클로저의 다양한 형태
result = math(x: 10, y: 20, cal: add)
print(result)
result = math(x: 10, y: 20) {(a: Int, b: Int) -> Int in
return a+b
}
print(result)
result = math(x: 10, y: 20, cal: {(a: Int, b: Int) in
return a+b
})
print(result)
result = math(x: 10, y: 20, cal: {
return $0 + $1
})
print(result)
result = math(x: 10, y: 20, cal: {$0 + $1})
print(result)
$0, $1같은 문법은 Shorthand 인자.
후행 클로저를 쓰는 이유
1. 가독성 좋아짐.2. 중첩 클로저 있을 때 구조 깔끔해짐.3. SwiftUI와 클로저 기반 API에서 필수적임.4. 함수 호출을 "동작"처럼 읽을 수 있다.
'공부 > iOS' 카테고리의 다른 글
| iOS 프로그래밍 12주차 (0) | 2025.11.19 |
|---|---|
| iOS 프로그래밍 11주차 (0) | 2025.11.11 |
| iOS 프로그래밍 10주차 (0) | 2025.11.04 |
| iOS 프로그래밍 9주차 (0) | 2025.10.28 |
| iOS 프로그래밍 7주차 (0) | 2025.10.14 |