iOS 공부하는 감자

Entry Point 본문

iOS

Entry Point

DongTaTo 2022. 7. 4. 19:15
반응형

Entry Point란?

프로그램이 시작하는 지점을 의미한다.

CPU는 Entry Point를 통해 프로그램을 실행시키기 때문에, 모든 프로그램은 반드시 Entry Point가 존재해야 한다.!

 

 

 

 


 

 

 

Swift에서의 Entry Point

C언어를 포함한 많은 프로그래밍 언어에서는 main() 함수를 Entry Point로 사용한다.

Swift도 main()함수가 있다..! 다만, C언어처럼 main함수를 직접 구현하는 게 아니라 "@main"이라는 attribute symbol을 사용하여 Swift의 진입점을 지정해준다. (Swift 5.3 ~)

// @main 키워드를 사용하여 Entry Point를 알려준다.

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
		// ...
}

 

@main을 주석처리하고 빌드를 하면 다음과 같은 에러가 발생한다.

"Entry point(_main) undefined. for architecture arm64"

 

 

 


 

 

 

Storyboard에서의 Entry Point

@main을 통해 앱이 처음 실행되었을 때 CPU가 작업할(?) 진입점을 정해주었다면, 요기서 설명할 Entry Point는 LaunchScreen 이후에 가장 먼저 나올 화면을 지정하는 것을 설명한다.

 

프로젝트 설정 General >> Main Interface속성의 값을 변경하여 LaunchScreen이후에 사용할 스토리보드를 지정할 수 있다.

기본값은 프로젝트를 생성했을 때 자동 생성된 Main.storyboard이다.

 

만약 변경하고 싶다면 아래 순서로 설정을 변경하면 된다.

1. 프로젝트 설정 - General - Main Interface 설정 변경

2. Info.plist - Storyboard Name 설정 변경

 

 

 

 

Storyboard Reference를 사용할 경우, 파일마다 Initial View Controller (EntryPoint)을 꼭 설정해 주어야 한다.

 

스토리보드의 Entry Point가 없는 경우 다음과 같은 에러가 발생한다.

"Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the designated entry point is not set?"

대충 MainStoryboard에서 진입점(Entry Point)를 찾지 못해서 ViewController를 인스턴스화 시키지 못했다는 에러..!

 

 

 


 

 

Storyboard 파일의 ViewController EntryPoint 설정하는 방법

프로젝트를 만들면 기본적으로 Main.storyboard 파일이 생성된다.

파일을 열면 기본 ViewController가 하나 생성되어 있고, 왼쪽에 화살표가 달려있는 걸 확인할 수 있다.

 

옆에 달려있는 화살표가 Entry Point임을 나타낸다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

두 가지 방법으로 Storyboard의 Entry Point를 변경해줄 수 있다.

  1. ViewController에 붙어있는 화살표를 드래그&드롭을 통해 다른 ViewController로 붙여준다.
  2. ViewController의 인스펙터 설정에서 "is Initial View Controller" 속성을 선택한다.
    1. 스토리보드에서 Entry Point로 설정하고 싶은 ViewController 선택하기
    2. Xcode 우측의 인스펙터에서 "is Initial View Controller" 체크하기

 

 

 

 

 

 

 

반응형

'iOS' 카테고리의 다른 글

iOS) this class is not key value coding-compliant for the key ...  (0) 2022.07.05
UIButton in iOS 15.0  (0) 2022.07.04
qos (Quality of Service)  (0) 2022.05.21
iOS) 탭바를 버튼처럼 사용하기  (0) 2022.04.08
AutoLayout  (0) 2022.02.10