Cocoa touch swift代码执行的切入点是什么?

Cocoa touch swift代码执行的切入点是什么?,cocoa-touch,swift,ios8,Cocoa Touch,Swift,Ios8,swift中没有main()方法。程序必须从某处开始执行。那么,swift代码执行的入口点是什么?它是如何决定的?普通swift模块中的入口点是名为main.swift的模块中的文件main.swift是唯一允许在顶层包含表达式和语句的文件(模块中的所有其他swift文件只能包含声明) Cocoa Touch在实现上使用而不是main.swift文件来标记入口点。Cocoa过去使用最小的main.swift文件,该文件仅称为NSApplicationMain,但在的实现中使用。普通swift模块

swift中没有
main()
方法。程序必须从某处开始执行。那么,swift代码执行的入口点是什么?它是如何决定的?

普通swift模块中的入口点是名为
main.swift的模块中的文件
main.swift
是唯一允许在顶层包含表达式和语句的文件(模块中的所有其他swift文件只能包含声明)


Cocoa Touch在实现上使用而不是
main.swift
文件来标记入口点。Cocoa过去使用最小的
main.swift
文件,该文件仅称为
NSApplicationMain
,但在的实现中使用。

普通swift模块中的入口点是名为
main.swift
的模块中的文件
main.swift
是唯一允许在顶层包含表达式和语句的文件(模块中的所有其他swift文件只能包含声明)


Cocoa Touch在实现上使用而不是
main.swift
文件来标记入口点。Cocoa过去使用一个最小的
main.swift
文件,该文件仅称为
NSApplicationMain
,但在
AppDelegate.swift
文件中的
@UIApplicationMain
的实现中使用。
AppDelegate是初始条目文件


基本上:
main.m
AppDelegate.m
Swift
中被合并为
AppDelegate.Swift

,在
AppDelegate.Swift
文件中可以看到
@UIApplicationMain

AppDelegate是初始条目文件

基本上:
main.m
AppDelegate.m
Swift
中有点合并成了
AppDelegate.Swift

您可能需要阅读

例外是一个名为“main.swift”的特殊文件,它的行为非常简单 类似于游乐场文件,但使用应用程序的源代码构建。这个 “main.swift”文件可以包含顶级代码,并且与订单相关 规则也适用。实际上,要运行的第一行代码 “main.swift”隐式定义为 节目。这使得最小Swift程序可以是一行- 只要那一行是“main.swift”

在Xcode中,Mac模板默认包含一个“main.swift”文件,但是 对于iOS应用程序,新iOS项目模板的默认设置是添加 @UIApplicationMain到常规Swift文件。这会导致编译器崩溃 为您的iOS应用程序合成一个主要入口点,并消除 需要一个“main.swift”文件

或者,您可以链接到以书面形式编写的main的实现中 Objective-C,从增量迁移项目时常见 目标C到Swift

你可能想读书

例外是一个名为“main.swift”的特殊文件,它的行为非常简单 类似于游乐场文件,但使用应用程序的源代码构建。这个 “main.swift”文件可以包含顶级代码,并且与订单相关 规则也适用。实际上,要运行的第一行代码 “main.swift”隐式定义为 节目。这使得最小Swift程序可以是一行- 只要那一行是“main.swift”

在Xcode中,Mac模板默认包含一个“main.swift”文件,但是 对于iOS应用程序,新iOS项目模板的默认设置是添加 @UIApplicationMain到常规Swift文件。这会导致编译器崩溃 为您的iOS应用程序合成一个主要入口点,并消除 需要一个“main.swift”文件

或者,您可以链接到以书面形式编写的main的实现中 Objective-C,从增量迁移项目时常见 目标C到Swift


在Swift应用程序中,有以下属性:

  • @UIApplicationMain
    (可可触摸)
  • @NSApplicationMain
    (Cocoa)
告诉swift编译器应用程序的入口点在哪里

swift编译器在幕后的作用是创建一个
main
函数,该函数基本上与Objective-C应用程序中的函数相同,并将此方法视为应用程序的入口点(应用程序进程启动时调用的第一个方法)


如果您想了解更多有关swift编译器如何处理
Main
属性,操作系统如何知道应用程序的入口点,我建议您阅读本文:

在swift应用程序中,有以下属性:

  • @UIApplicationMain
    (可可触摸)
  • @NSApplicationMain
    (Cocoa)
告诉swift编译器应用程序的入口点在哪里

swift编译器在幕后的作用是创建一个
main
函数,该函数基本上与Objective-C应用程序中的函数相同,并将此方法视为应用程序的入口点(应用程序进程启动时调用的第一个方法)


如果您想了解更多有关swift编译器如何处理
Main
属性的信息,操作系统如何知道应用程序的入口点在哪里,我鼓励您阅读本文:

在Swift 5.3中,有一个新的
@main
属性,它允许您控制项目的入口点,而不仅仅是
main.Swift
。只能有一个主条目,不能有
main.swift
文件和属性
@main
。有关更多详细信息,请参阅

@main
struct App {
    static func main() {
        print("Starting.")
    }
}

在Swift 5.3中,有一个新的
@main
属性,允许您控制入口点在项目中的位置,而不仅仅是
main.Swift
。只能有一个主条目,不能有
main.swift
文件和属性
@main
。看见