신속한 코드 실행의 진입 점은 무엇입니까?


105

main()신속한 방법 은 없습니다 . 프로그램은 어딘가에서 실행을 시작해야합니다. 그렇다면 신속한 코드 실행의 진입 점은 무엇이며 어떻게 결정됩니까?

답변:


94

일반 Swift 모듈의 진입 점은 main.swift. main.swift최상위 수준에서 표현식과 명령문을 가질 수있는 유일한 파일입니다 (모듈의 다른 모든 Swift 파일은 선언 만 포함 할 수 있음).

Cocoa Touch는 진입 점을 표시하기 위해 파일 대신 구현에 @UIApplicationMain속성 을 사용합니다 . 코코아는 최소한 사용하는 데 사용 단순히라는 파일을 하지만, 엑스 코드 6.1로 용도 속성 의 구현에를 .UIApplicationDelegatemain.swiftmain.swiftNSApplicationMain@NSApplicationMainNSApplicationDelegate


4
새 xcode 프로젝트를 만들었는데 main.swift어디서나 파일 을 찾을 수 없습니다 . 이 파일의 위치는 무엇입니까?
Selvin 2014-06-08

Cocoa 및 Cocoa Touch 응용 프로그램 main.swift지원 파일 그룹에 있으며 NSApplicationMain.
nathan

4
지원 파일 그룹에 없습니다. 프로젝트의 어디에도 없습니다.
Selvin 2014-06-08

1
죄송합니다. Cocoa Touch는 틀렸지 만 Cocoa는 맞았습니다. 내 업데이트 된 대답을 참조하십시오
나단

물론 Cocoa Touch에서도 main.swift.
Sulthan

40

에서 AppDelegate.swift파일 당신이 볼 수 있습니다 @UIApplicationMain.
AppDelegate는 초기 항목 파일입니다.

기본적으로 : main.mAppDelegate.m좀에 병합 Swift단지에AppDelegate.swift


2
그는 태그 @nathan iOS8의 간다, Cocoa-Touch내 대답은 권리입니다.

좋아, 어떻게 main.m을 swift로 바꿀 수 있는지 궁금했는데 하나도 찾지 못했습니다.
Jalil

28

파일 및 초기화 를 읽을 수 있습니다.

예외는 "main.swift"라는 이름의 특수 파일로, 플레이 그라운드 파일처럼 동작하지만 앱의 소스 코드로 빌드됩니다. "main.swift"파일은 최상위 코드를 포함 할 수 있으며 주문에 따른 규칙도 적용됩니다. 실제로 "main.swift"에서 실행되는 코드의 첫 번째 줄은 암시 적으로 프로그램의 기본 진입 점으로 정의됩니다. 이것은 최소한의 Swift 프로그램이 "main.swift"에있는 한 단일 라인이되도록합니다.

Xcode에서 Mac 템플릿은 기본적으로 "main.swift"파일을 포함하지만 iOS 앱의 경우 새 iOS 프로젝트 템플릿의 기본값은 일반 Swift 파일에 @UIApplicationMain을 추가하는 것입니다. 이렇게하면 컴파일러가 iOS 앱의 기본 진입 점을 합성하고 "main.swift"파일이 필요하지 않습니다.

또는 Objective-C에서 Swift로 프로젝트를 점진적으로 마이그레이션 할 때 일반적으로 Objective-C로 작성된 main 구현에서 링크 할 수 있습니다.


3
나는 이것이 iOS에서 진입 점이 설정되는 방법에 대한 더 좋고 높은 수준의 설명이라는 것을 알았습니다.
Steven

좋은 대답과 좋은 링크. 그런 다음 "조기"실행해야하는 코드를 넣을 수있는 좋은 장소를 찾았습니다. 앱 델리게이트 메서드 중 하나를 사용하는 대신 앱 델리게이트에서 init를 재정의하고 거기에서 수행합니다. 예를 들어 기본 로깅 수준을 설정하는 데 사용했습니다.
찰스

1

Swift 앱에는 다음과 같은 속성이 있습니다.

  • @UIApplicationMain (코코아 터치)
  • @NSApplicationMain (코코아)

애플리케이션의 진입 점이 어디인지 신속한 컴파일러에 알려줍니다.

신속한 컴파일러가 내부적으로 수행하는 작업은 main기본적으로 Objective-C 앱에서와 동일하게 보이고이 메서드를 앱의 진입 점 (애플리케이션 프로세스가 시작될 때 호출되는 첫 번째 메서드)으로 취급 하는 함수를 생성한다는 것 입니다.

swift 컴파일러가 Main어트리뷰트로 무엇을 하는지, OS가 애플리케이션의 진입 점이 어디인지 아는 방법에 대해 더 알고 싶다면이 기사를 읽는 것이 좋습니다. iOS 앱 진입 점 이해


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.