Sel*_*vin 97 cocoa-touch swift ios8
main()swift中没有方法.程序必须从某个地方开始执行.那么快速代码执行的切入点是什么?它是如何决定的?
nat*_*han 86
普通Swift模块中的入口点是模块中的文件main.swift.main.swift唯一允许在顶层具有表达式和语句的文件(模块中的所有其他Swift文件只能包含声明).
Cocoa Touch使用实现而不是文件的@UIApplicationMain属性来标记入口点.Cocoa曾经使用一个简单调用的最小文件,但是从Xcode 6.1开始就使用了一个实现的属性.UIApplicationDelegatemain.swiftmain.swiftNSApplicationMain@NSApplicationMainNSApplicationDelegate
h0u*_*sni 37
在AppDelegate.swift文件中,您可以看到@UIApplicationMain.
AppDelegate是初始条目文件.
基本上:main.m并且AppDelegate.m有点合并Swift到了AppDelegate.swift
onm*_*133 25
您可能需要阅读文件和初始化
例外是一个名为"main.swift"的特殊文件,其行为与操作员文件非常相似,但是使用您应用的源代码构建."main.swift"文件可以包含顶级代码,并且依赖于顺序的规则也适用.实际上,在"main.swift"中运行的第一行代码被隐式定义为程序的主要入口点.这允许最小的Swift程序是单行 - 只要该行在"main.swift"中.
在Xcode中,Mac模板默认包含"main.swift"文件,但对于iOS应用程序,新iOS项目模板的默认设置是将@UIApplicationMain添加到常规Swift文件中.这会导致编译器为您的iOS应用程序合成一个主入口点,并且不需要"main.swift"文件.
或者,您可以链接到Objective-C中编写的main实现,这在将项目从Objective-C逐步迁移到Swift时很常见.
在 Swift 5.3 中,有一个新@main属性可让您控制入口点在项目中的位置,而不仅仅是main.swift. 只能有一个主条目,并且不能有main.swift文件和属性@main。有关更多详细信息,请参阅https://github.com/apple/swift-evolution/blob/master/proposals/0281-main-attribute.md。
@main
struct App {
static func main() {
print("Starting.")
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34299 次 |
| 最近记录: |