코드의 실행을 Scope 종료 시점으로 연기시키는 방법
defer {
statements
}
import Foundation
func processFile(path: String) {
//파일을 열고
let file = FileHandle(forReadingAtPath: path)
//이렇게 되면 jpg파일은 파일을 연 뒤 닫지 않는 문제 발생
if path.hasSuffix(".jpg"){
return
}
//닫기
file?.closeFile()
}
import Foundation
func processFile(path: String) {
//파일을 열고
let file = FileHandle(forReadingAtPath: path)
//함수가 끝나기 전까지 실행되지 않으며, 런타임 에러 발생한 것이 아니라면 함수가 끝나는 시점에 실행
//여기에서는 언제나 끝날 때 close 함수가 실행되는 것
defer {
//닫기
file?.closeFile()
}
if path.hasSuffix(".jpg"){
return
}
}
import Foundation
func processFile(path: String) {
//파일을 열고
let file = FileHandle(forReadingAtPath: path)
//함수가 끝나기 전까지 실행되지 않으며, 런타임 에러 발생한 것이 아니라면 함수가 끝나는 시점에 실행
//여기에서는 언제나 끝날 때 close 함수가 실행되는 것
if path.hasSuffix(".jpg"){
return
}
//jpg일경우 실행 안됨
defer {
//닫기
file?.closeFile()
}
}
defer
문은 호출된 순서대로 코드를 예약