我没有目标C的经验,所以我遇到了一些符号的麻烦。在我的“AppDelegate.swift”文件中,顶部有一个“@UIMainApplication”。这是什么意思?Swift中'@'符号的含义是什么?
另外,如果可能的话,请你给我在C++中的“等效”语句(如果存在)?
谢谢。
我没有目标C的经验,所以我遇到了一些符号的麻烦。在我的“AppDelegate.swift”文件中,顶部有一个“@UIMainApplication”。这是什么意思?Swift中'@'符号的含义是什么?
另外,如果可能的话,请你给我在C++中的“等效”语句(如果存在)?
谢谢。
那么,你选了一个相当复杂的。 @
仅仅意味着这是一个属性 - 编译器的特殊标记或信号,如Apple explains here。但@UIApplicationMain
是一个特别深刻的属性!它可以替代整个UIApplicationMain
实现,就在于在C/Objective-C的应用程序的心脏,在的main.m文件(I explain here):
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil,
NSStringFromClass([AppDelegate class]));
}
}
这是应用程序的主入口点,执行整个启动运行代码是正在运行的应用程序。你可以做这样的事情在Swift - 一个main.swift文件与该代码的Swift等效 - 但Swift通过让您指定您的应用程序委托类与@UIApplicationMain
属性为您节省了麻烦。
如果你开始一个项目作为一个Objective-C或Objective-C++项目,模板会给你包含main
实施主文件,所以没有必要做任何事情,在这方面特别。
以@开头的关键字是编译器的指令 - 例如,在视图控制器中,您使用@IBOutlet
来标识与可视化界面内的连接有关的变量声明(一个故事板或XIB文件 - 'IB'前缀站'界面构建器',这是苹果设计工具的一部分的旧名称,它提供了用于直观地创建界面的GUI)。
简而言之,@UIApplicationMain
是Swift应用程序的一个指示器,用于指示哪个对象是您的应用程序的主应用程序委托文件。在Objective-C应用程序模板中,您将有一个微不足道的main.m
C文件来设置应用程序委托。使用Swift,这个微不足道的实现变成了单个指令。
在这两种情况下,如果需要的话,可以用更复杂的东西来代替微不足道的实现 - 但在大多数应用程序中不需要其他任何东西,事实上,如果您只是在Swift中开始使用,你需要一个不平凡的实现最可能是零。
Thx。我刚才读过:[应用程序生命周期](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/TheAppLifeCycle/TheAppLifeCycle.html),并且最近去了'main '在我的Swift项目中......显然,找不到它。 – benc
@benc you _can_删除'@ UIApplicationMain'并提供您自己的_main.swift_文件,如下所示:https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk1ch06p297main/bk1ch06p297main/main.swift但是现在我可以认为没有理由这样做。 – matt