推出Swift应用程序序列

Ani*_*ese 10 ios swift

任何人都知道快速应用程序的启动顺序?正如我所看到的,main在快速应用程序中没有任何功能.那么谁负责这样做

// Entry point of a normal iOS app
int main(int argc, char * argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}
Run Code Online (Sandbox Code Playgroud)

您的应用程序对象和AppDelegate将在此处创建.但对于快速的应用程序,我想知道谁在创建这些.

如果有人知道,请分享您的想法.

Sur*_*rma 11

如果你看一下AppDelegate.Swift类,你会发现@UIApplicationMain在文件的全局区域写的语句.正如@Daniel在他的回答中也提到的那样.

现在我尝试评论该行并编译代码,看看我得到了什么..

在此输入图像描述

在非常简单的语言中,错误说编译器试图搜索implicit entry/start for main executable,但没有得到.

它显示@UIApplicationMain语句AppDelegate.Swift为Swift程序创建一个隐式入口点.

我试着明确写出main.swift类......它的工作原理.

我的main.swift看起来像..

import Foundation
import UIKit

UIApplicationMain(C_ARGC, C_ARGV, NSStringFromClass(UIApplication), NSStringFromClass(AppDelegate))
Run Code Online (Sandbox Code Playgroud)

  • 不需要自动释放池吗? (2认同)

Dan*_*iel 7

快速的书说:

在全局范围编写的代码用作程序的入口点,因此您不需要主函数.

如果你看一下你AppDelegate的标记@UIApplicationMain是在任何范围之外并被视为入口点.

  • 在这里找到了更多的信息http://stackoverflow.com/a/24021180/1873085 (2认同)