Int32
타입이 반환 타입으로 지정되어있지만, 이 함수는 반환하지 않는다.
사용자가 홈 버튼을 눌러 iOS앱을 종료하면 애플리케이션이 백그라운드로 이동한다.
또한, 파라미터명에서 볼 수 있듯 Class에서만 사용가능하다.
Swift는 main함수가 없지만 @main이라는 어노테이션 표기가 있다. 이 표기를 통해서 object-c의 1-5과정이 대체된다.
Swift기반으로된 iOS 프로젝트는 main파일이 없다.
@main을 선언하여 iOS앱의 진입점을 컴파일러가 지정하기 때문이다.
기존 @UIApplicationMain은 Swift5.3(Xcode12)이전에 사용되었고, 이후로는 @main 키워드가 사용되고 있다.
@main을 사용하면서 클래스 뿐만 아니라 구조체 등에서도 진입점을 잡을 수 있다.
main() 함수 자체가 타입 메서드이기에 프로토콜에서 extension 메서드 및 기본 클래스로 제공될 수 있다.
따라서, 원하는 곳에서 @main을 통해 진입점을 제공해줄 수 있다.
UIApplicationMain
@mainVS@UIApplicationMain(green)
: 래핑된 값
또는 값이 없는 nil
을 나타내는 타입(열거형)이다.
Optional 인스턴스의 래핑된 값을 새 변수에 조건부로 바인딩하려면 if let
, guard let
및 switch
를 비롯한 선택적 바인딩 제어 구조 중 하나를 사용한다.
래핑된 인스턴스의 속성과 메서드에 안전하게 액세스하려면 접미사 옵셔널 체이닝 연산자(후위 ?
)를 사용한다. 다음 예제에서는 옵셔널 체이닝을 사용하여 String?의 hasSuffix(_:) 메서드에 액세스한다.
Optional 인스턴스가 nil인 경우 nil-coalescing 연산자(??
)를 사용하여 기본값을 제공한다.
Optional의 인스턴스에 값이 포함되어 있다고 확신하는 경우 강제 언래핑 연산자(접미사 !
)를 사용하여 값을 무조건 해제할 수 있다. !를 사용하여 강제 언래핑을 했을 때 nil 값일 경우 런타임 오류를 발생시킨다.
IBOutlet이 !인 이유
인터페이스 빌더와 뷰 컨트롤러의 로드되는 시점이 다르기 때문이다.
뷰 컨트롤러가 먼저 로드되기 때문에 스토리보드의 데이터가 로드되기 전에 값이 있을 것이라는 옵셔널 값으로 지정해준다.
: 프로그램 코드의 빌딩 블록이 되는 유연한 범용 구조이다.
.
를 사용하여 값에 접근