(Swift) Ошибка: атрибут UIApplicationMain нельзя использовать в модуле
Поэтому, как часть моих усилий по изучению Swift, я получил в свои руки проект с открытым исходным кодом "Приключение" (найденный ЗДЕСЬ), доступный Apple.
Смущающе, я не зашел слишком далеко, пока не столкнулся с моим первым затруднением. Когда я попытался скомпилировать проект, я получил следующую ошибку:
Атрибут "UIApplicationMain" нельзя использовать в модуле, который содержит код верхнего уровня "
В частности, ошибка находится в AppDelegate.swift
файл и атрибут приходит сразу после import UIKit
объявление следующим образом:
import UIKit
@UIApplicationMain
class AppDelegate: NSObject, UIApplicationDelegate {
var window: UIWindow?
....
// a number of functions that I won't list here...
....
}
Я провел некоторое исследование по этому вопросу, но по понятным причинам (?), Кажется, не так много информации по этому вопросу. Интересно, сталкивался ли кто-нибудь с той же проблемой?
(Кстати, я использую Xcode6-beta5)
РЕДАКТИРОВАТЬ 1 --------------
Теперь, при новой установке Beta6, я получаю следующие ошибки после компиляции:
Неопределенные символы для архитектуры x86_64:"TFSs15_arrayForceCastU___FGSaQ__GSaQ0", ссылочные из: __TFC9Adventure13HeroCharacter20animationDidCompletefS0_FOS_14AnimationStateT_ в HeroCharacter.o __TFC9Adventure13HeroCharacter14fireProjectilefS0_FT_T_ в HeroCharacter.o __TFC9Adventure4Cave15applyCaveDamagefS0_FTSd10projectileCSo6SKNode_T_ в Cave.o __TFC9Adventure4Cave12performDeathfS0_FT_T_ в Cave.o __TFFC9Adventure4Cave16loadSharedAssetsFMS0_FT_T_U_FT_T_ в Cave.o __TFC9Adventure6Goblin20animationDidCompletefS0_FOS_14AnimationStateT_ в Goblin.o __TFFC9Adventure6Goblin16loadSharedAssetsFMS0_FT_T_U_FT_T_ в Goblin.o ... "__TFSsoi1aUSs17_RawOptionSetType_USs21BitwiseOperationsTypeSs9Equatable__FTQ_Q__Q_", ссылки из: __TFC9Adventure21LayeredCharacterScene14handleKeyEventfS0_FTCSo7NSEvent7keyDownSb_T_ в LayeredCharacterSceneOSXEvents.o "__TFVSC6CGSizeCfMS_FT5widthSd6heightSd_S_", ссылки из: __TFFC9Adventure6Archer16loadSharedAssetsFMS0_FT_T_U_FT_T_ в Archer.o л.д.: SYM Болты не найдены для архитектуры x86_64 clang: ошибка: сбой команды компоновщика с кодом выхода 1
Я даже не собираюсь пытаться угадать, что означают эти ошибки.
2 ответа
Видимо, проект Adventure неправильно компилируется в Xcode6-Beta5. Тем не менее, Xcode6-Beta6 компилируется и запускается просто отлично.
Что касается ошибки, возникшей после обновления до бета-версии 6, способ исправить это удалить производные данные для проекта. Для этого откройте органайзер (меню "Окно" -> "Органайзер"), выберите проект "Приключение" в левой части окна, затем нажмите кнопку "Удалить", связанную с производными данными проекта (должен быть верхний справа).
Для меня, кажется, был еще один файл с именем main.swift, который конфликтовал с моим AppDelegate. Я удалил это, и проблема ушла.