Проект Objective-C с подклассом Swift UIApplication. Ошибка: класс не загружен
У меня есть проект, написанный на Objective-C, и я только что добавил подкласс UIApplication, используя Swift: RMFApplication.swift
(реализация в конце поста). Тем не менее, я получаю эту ошибку:
Завершение работы приложения из-за невыполненной исключительной ситуации NSInternalInconsistencyException, причина: "Невозможно создать экземпляр экземпляра подкласса UIApplication. Класс с именем RMFApplication не загружен.'
- В моем info.plist я правильно указал имя в NSPrincipalClass и дважды проверил его.
- Я прочитал этот ответ, а затем посмотрел по-своему
main.m
который говорит:return UIApplicationMain(argc, argv, nil, NSStringFromClass([RMFAppDelegate class]));
, - Документы для
UIApplicationMain
скажи что еслиnil
определяется как третье значение, тоUIApplication
предполагается, но почему тогда мое сообщение об ошибке включает в себя мое имя класса? Я должен предположитьnil
означает, что он будет читать значение info.plist.
Примечание. Подклассы UIApplication хорошо работали с RMFApplication.h
а также RMFApplication.m
, Единственное, что изменилось, это переименование этих файлов и добавление RMFApplication.swift
файл, который компилируется без предупреждений:
import UIKit
class RMFApplication: UIApplication {
override func openURL(url: NSURL) -> Bool
{
println(url.description)
return false;
}
}
Я знаю, что я могу просто продолжать использовать Objective-C, но я хотел бы попытаться перейти на Swift, если эти два действительно не играют хорошо вместе.
1 ответ
Может быть, это потому, что он использует NSStringFromClass или что-то еще, так что в Swift RMFApplication " искажается " и становится чем-то вроде "somePrefix" RMFApplication (или того, что отличается от просто "RMFApplication").
Вы можете попробовать это:
@objc(RMFApplication) class RMFApplication: UIApplication
И тогда NSStringFromClass вернет просто "RMFApplication".