2014-11-06 2 views
4

в моем приложении ios (swift), я создал main.swift, в котором я устанавливаю глобальную переменную, проверяя NSDefault, чтобы проверить удаление объявлений.Как реализовать main.swift в приложении iOS Xcode 6?

, то в каждом диспетчере представлений я сначала проверяю эту глобальную переменную и удаляет объявления, если это необходимо, прежде чем показывать представление.

проблема в том, что xcode не нравится @UIApplicationMain в AppDelegate.swift, потому что у меня есть main.swift. Если я удалю строку @UIApplicationMain, приложение выйдет из строя при запуске.

Я реализую main.swift неправильно?

+0

Пожалуйста, разместите содержимое вашего main.swift – DPlusV

ответ

7

Ваш файл main.swift нужно будет выглядеть примерно так:

import Foundation 
import UIKit 

// Your initialization code here 

UIApplicationMain(C_ARGC, C_ARGV, nil, NSStringFromClass(AppDelegate)) 

UIApplicationMain начнет цикл событий и предотвратить приложение от выхода.

C_ARGC и C_ARGV являются Swift vars, которые представляют параметры C, проходящие через главную, а именно int argc и char *argv[].

UPDATE 2016-01-02: C_ARGCC_ARGV и были заменены Process.argc и Process.unsafeArgv соответственно. [source]

3

Swift 1.2 Формат:

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

2

от очень хороший ответ на вопрос How do I access program arguments in Swift? от Darrarski ...

Синтаксис 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)) 

и не забудьте удалить «@UIApplicationMain» из AppDelegate.swift, поскольку это будет redunda nt и вызывает ошибку компилятора.

Смежные вопросы