프로그램 구조상 정의될 땐 nil이지만, 값을 사용할 때 "값 있음"이 확실히 보장되는 경우가 있다. 이럴 때, 사용할 수 있는 타입이 Implicitly Unwrapped Optional이다.
let assumedString: String! = "An implicitly unwrapped optional string."
let implicitString: String = assumedString // no need for an exclamation point
Implicitly Unwrapped Optional은 Optional처럼 nil일 수도 있고, 값이 있을 수도 있다.
하지만, 사용할 땐 non-optional value처럼 사용할 수 있다. 사용할 때 optional타입으로 사용될 수 없으면, 강제로 unwrapping을 해주기 때문이다.
따라서 Implicitly Unwrapped Optional이 만약 nil이라면 runtime error를 발생시킨다.
@IBOutlet과 같이 값을 사용할 때 값이 보장된다면 Implicitly Unwrapped Optional타입으로 정의해주면, 사용시 옵셔널 바인딩을 해주지 않아도 되기 때문에 편리하다.
UIViewController
클래스의 인스턴스 메서드이다.
ViewController
의 view heirachy에 있는 모든 view
가 메모리에 로드된 직후 호출되는 메서드이다. 뷰가 로드된 이후, 추가적인 뷰에 대한 초기화를 해주고 싶을 때 override해서 사용해주면 된다.
Type property는 전역에서 접근 가능한 타입의 프로퍼티이다.
프로퍼티 정의시static
키워드를 적어주면된다.
class SomeClass {
static var storedTypeProperty = "Some value."
static var computedTypeProperty: Int {
return 27
}
class var overrideableComputedTypeProperty: Int {
return 107
}
}
단, 클래스의 연산프로퍼티를 Type property로 정의하고,
subclass를 통해 override를 가능하게 하고 싶다면
static
대신 class
키워드를 적어주면된다.
UIAlertController in Swift and how to use them in Extension or in Custom Class