계산 프로퍼티는 값이 저장되지 않고, 값이 요청될 때마다 계산된다. Swift에서 var 키워드를 사용해 정의할 수 있다.
속성처럼 호출:
someView.parentViewController처럼 속성 접근 구문으로 호출됨읽기 전용 및 읽기/쓰기 가능:
상태 저장 없음:
extension UIView {
var parentViewController: UIViewController? {
var parentResponder: UIResponder? = self
while let responder = parentResponder {
parentResponder = responder.next
if let viewController = parentResponder as? UIViewController {
return viewController
}
}
return nil
}
}
메서드는 객체의 행위를 정의하는 함수로,func 키워드를 사용해 정의한다.
함수 호출 구문:
someView.getParentViewController() 과 같이 함수 호출 구문으로 호출된다.인자와 반환값:
동작 정의:
extension UIView {
func getParentViewController() -> UIViewController? {
var parentResponder: UIResponder? = self
while let responder = parentResponder {
parentResponder = responder.next
if let viewController = parentResponder as? UIViewController {
return viewController
}
}
return nil
}
}
| 계산 프로퍼티 | 메서드 | |
|---|---|---|
| 호출 방식 | let viewController = someView.parentViewController | let viewController = someView.getParentViewController() |
| 설명 | 속성 접근 구문으로 호출 | 함수 호출 구문으로 호출 |
| 사용 목적 | 속성처럼 보이게 하기 위해 사용 | 동작을 명시적으로 표현하기 위해 사용 |
| 사용 의도 | 객체의 속성처럼 보이지만, 실제로는 호출될 때마다 값을 계산 | 특정 작업을 수행하거나, 여러 인자를 받아 처리할 때 사용 |
| 장점 | 간결하고 속성 접근처럼 사용하기 위해 사용 | 명시적으로 동작을 정의할 때 적합 |
| 주 용도 | 주로 읽기 전용 속성을 계산하는 데 사용 | 인자를 받아 다양한 동작을 정의 가능 |