如何在Xcode 6 iOS app中实现main.swift?

时间:2014-11-06 17:59:10

标签: ios xcode swift

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

然后在每个viewcontroller中,我首先检查该全局变量并在显示视图之前删除广告。

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

我是否实现了main.swift错误?

4 个答案:

答案 0 :(得分:9)

你的main.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。 [source]

答案 1 :(得分:4)

对Darrarski问题How do I access program arguments in 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.swift中删除“@UIApplicationMain”,因为它会冗余并导致编译器错误。

答案 2 :(得分:3)

Swift 1.2格式:

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

答案 3 :(得分:0)

这就是main.swift Swift 5

中的外观

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))

同样不要忘记从您的AppDelegate read more about it here中删除@UIApplicationMain标签