03.11.21 릴리 TIL

Lily·2021년 11월 5일
0

Today I Learned

목록 보기
18/30

🤓오늘 배운 내용!


1. Implicitly Unwrapped Optional

프로그램 구조상 정의될 땐 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타입으로 정의해주면, 사용시 옵셔널 바인딩을 해주지 않아도 되기 때문에 편리하다.

2. viewDidLoad()

UIViewController 클래스의 인스턴스 메서드이다.
ViewController의 view heirachy에 있는 모든 view가 메모리에 로드된 직후 호출되는 메서드이다. 뷰가 로드된 이후, 추가적인 뷰에 대한 초기화를 해주고 싶을 때 override해서 사용해주면 된다.

[애플 개발자 문서] viewDidLoad()


3. Type property

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키워드를 적어주면된다.

고민한 내용


alert, 어떻게 관리 할까?

UIAlertController in Swift and how to use them in Extension or in Custom Class

profile
i🍎S 개발을 합니다

0개의 댓글