如何在 Xcode 6 iOS 应用程序中实现 main.swift



在我的ios(swift(应用程序中,我创建了main.swift其中我正在设置一个全局变量来检查NSDefault以检查已删除的广告。

然后,在每个视图控制器中,我首先检查该全局变量,并在显示视图之前删除广告(如果合适(。

问题是 Xcode 不喜欢 AppDelegate 中的@UIApplicationMain.swift因为我有一个主.swift。如果我删除该行@UIApplicationMain应用程序会在启动时崩溃。

我实现主要.swift错了吗?

您的主文件需要如下所示.swift:

import Foundation
import UIKit
// Your initialization code here
UIApplicationMain(C_ARGC, C_ARGV, nil, NSStringFromClass(AppDelegate))

UIApplicationMain将启动事件循环并阻止应用退出。

C_ARGCC_ARGV 是 Swift 变量,表示通过 main 传入的 C 参数,即 int argcchar *argv[]

2016-01-02更新: C_ARGCC_ARGV分别被Process.argcProcess.unsafeArgv取代。[来源]

截至 如何在

Swift 中访问程序参数的问题的非常好的答案? 从达拉尔斯基...

Swift 3 语法为:

//
//  main.swift
//
import Foundation
import UIKit
// very first statement after load.. the current time
let WaysStartTime = CFAbsoluteTimeGetCurrent()
// build the parameters for the call to UIApplicationMain()
let argc = CommandLine.argc
let argv = UnsafeMutableRawPointer(CommandLine.unsafeArgv).bindMemory(to: UnsafeMutablePointer<Int8>.self, capacity: Int(CommandLine.argc))
// start the main loop
UIApplicationMain(argc, argv, nil, NSStringFromClass(AppDelegate.self))

并且不要忘记从 AppDelegate 中删除"@UIApplicationMain".swift因为它是多余的并导致编译器错误。

这就是

Swift 5main.swift的外观

Hardy_Germany的答案在 Xcode 10.2 中给出了警告。

//
//  main.swift
//  TopLevelCode
//
//  Created by Stoyan Stoyanov on 04/04/2019.
//  Copyright © 2019 Stoyan Stoyanov. All rights reserved.
//
import UIKit
import Foundation
UIApplicationMain(CommandLine.argc, CommandLine.unsafeArgv, nil, NSStringFromClass(AppDelegate.self))

同样不要忘记从您的应用程序代表中删除@UIApplicationMain标签 在此处阅读更多相关信息

Swift 1.2 格式:

UIApplicationMain(Process.argc, Process.unsafeArgv, nil, NSStringFromClass(AppDelegate))

最新更新