在我的ios(swift)应用程序中,我创建了main.swift,我在其中设置一个全局变量来检查NSDefault以检查已删除的广告。
然后在每个viewcontroller中,我首先检查该全局变量并在显示视图之前删除广告。
问题是xcode不喜欢AppDelegate.swift中的@UIApplicationMain,因为我有一个main.swift。如果我删除@UIApplicationMain行,则应用程序会在启动时崩溃。
我是否实现了main.swift错误?
答案 0 :(得分:9)
你的main.swift文件需要看起来像这样:
import Foundation
import UIKit
// Your initialization code here
UIApplicationMain(C_ARGC, C_ARGV, nil, NSStringFromClass(AppDelegate))
UIApplicationMain
将启动事件循环并阻止应用退出。
C_ARGC
和C_ARGV
是Swift变量,代表通过main传递的C参数,即int argc
和char *argv[]
。
更新2016-01-02:
C_ARGC
和C_ARGV
已分别替换为Process.argc
和Process.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
标签