美文网首页Swift
Swift项目的main函数消失了

Swift项目的main函数消失了

作者: 傲骨天成科技 | 来源:发表于2020-12-10 17:19 被阅读0次

    当我们在写OC项目的时候,会有一个main.m文件,里面有一个main函数,在这个函数中唤醒app。


    截屏2020-12-10 下午4.59.05.png

    main函数作为程序启动后的第二个函数被调用,然后在main函数中再启动UIApplication,并绑定AppDelegate。

    Swift项目中的main函数为何隐藏

    当我们创建一个Swift项目的时候,发现没有了main.swift文件,这是我们慌了,为什么呢?哈哈哈,官方的解释是这样的

    In Xcode, Mac templates default to including a 
    “main.swift” file, but for iOS apps the default for new 
    iOS project templates is to add @UIApplicationMain to a 
    regular Swift file. This causes the compiler to synthesize 
    a mainentry point for your iOS app, and eliminates the 
    need for a “main.swift” file.
    

    这段话的意思是,Swift项目中添加了@UIApplicationMain到swift文件中,使得编译器合成了一个app入口,所以不需要main.swift文件

    细心的同学会发现AppDelegate文件中多了个@UIApplicationMain的标志,启动app并打断点,发现main函数其实还是存在的


    1607591597556.jpg

    应该是苹果认为我们并不需要自行配置app入口,所以干脆简化了项目配置,使用更加简单的方式启动应用,但是有时候我们可能需要自己配置入口,例如创建UIApplication的子类时

    main.swift

    如果你希望通过自行配置入口的方式来创建一个UIApplication子类,那么就要创建一个main.swfit文件

    首先创建一个swift文件,命名为main
    main.swift中代码如下

    import Foundation
    import UIKit
    
    UIApplicationMain(Process.argc, Process.unsafeArgv, NSStringFromClass(UIApplication), NSStringFromClass(AppDelegate))
    

    这里把UIApplication换成你自定义的Application

    写好main.swift后,需要把AppDelegate中的@UIApplicationMain注释掉,重新运行项目即可。

    main函数的参数

    以前OC的main函数的argv参数是一个字符串指针,打印出来后是应用程序的路径。swift中main函数的 Process.unsafeArgv 参数变成了一串十六进制数字,应该也是代表应用程序地址。至于为何要修改成数字,也许这是出于安全性考虑吧

    相关文章

      网友评论

        本文标题:Swift项目的main函数消失了

        本文链接:https://www.haomeiwen.com/subject/qodrgktx.html