Xcode 8 beta 6: main.swift won't compile

前端 未结 2 1389
耶瑟儿~
耶瑟儿~ 2020-12-02 19:10

We have a custom UIApplication object, so our main.swift was

import Foundation
import UIKit

UIApplicationMain(Process.argc, Process.unsafeArgv, NSStringFrom         


        
2条回答
  •  臣服心动
    2020-12-02 19:28

    It seems Process has been renamed to CommandLine in beta 6.

    CommandLine

    But the type of CommandLine.unsafeArgv is mismatching the second argument of UIApplication, so you may need to write something like this:

    CommandLine.unsafeArgv.withMemoryRebound(to: UnsafeMutablePointer.self, capacity: Int(CommandLine.argc)) {argv in
        _ = UIApplicationMain(CommandLine.argc, argv, NSStringFromClass(MobileUIApplication.self), NSStringFromClass(AppDelegate.self))
    }
    

    (UPDATE)This mismatching should be considered as a bug. Generally, you'd better send a bug report when you find "this-should-not-be" things, like the third parameter in beta 5. I hope this "bug" will be fixed soon.


    If you just want to designate your custom UIApplication class, why don't you use Info.plist?

    NSPrincipalClass | String | $(PRODUCT_MODULE_NAME).MobileUIApplication
    

    (Shown as "Principal class" in non-Raw Keys/Values view.)

    With this in your Info.plist, you can use your MobileUIApplication with normal way using @UIApplicationMain.

    (ADDITION) Header doc of UIApplicationMain:

    // If nil is specified for principalClassName, the value for NSPrincipalClass from the Info.plist is used. If there is no
    // NSPrincipalClass key specified, the UIApplication class is used. The delegate class will be instantiated using init.
    

提交回复
热议问题