使用Swift UIApplication子类的Objective-C项目。 错误:类未加载

我有一个Objective-C编写的项目,我刚刚添加了一个UIApplication子类使用Swift: RMFApplication.swift (实施在后)。 但是,我得到这个错误:

由于未捕获exception'NSInternalInconsistencyException',原因:'无法实例化UIApplication子类实例。 没有名为RMFApplication的类被加载。

  • 在我的info.plist中,我正确地指定了NSPrincipalClass下的名字,并且对它进行了双重检查。
  • 我读了这个答案 ,然后看看我自己的main.m里面说: return UIApplicationMain(argc, argv, nil, NSStringFromClass([RMFAppDelegate class]));
  • UIApplicationMain的文档说,如果nil被指定为thrid值,那么假设UIApplication ,但为什么我的错误信息包含我的自定义类名? 我不得不假设它会读取info.plist值。

注意: UIApplication的子类化与RMFApplication.hRMFApplication.m 。 唯一改变的是这些文件的重命名以及添加了一个RMFApplication.swift文件,这个文件没有任何警告:

 import UIKit class RMFApplication: UIApplication { override func openURL(url: NSURL) -> Bool { println(url.description) return false; } } 

我知道我可以继续使用Objective-C,但是我想尝试移植到Swift,除非两者真的不能很好的搭配。

也许这是因为它使用了NSStringFromClass或者什么,所以在Swift中RMFApplication被“破坏”,变成类似“somePrefix”的RMFApplication (或者与“RMFApplication”不同的东西)。

你可以试试这个:

 @objc(RMFApplication) class RMFApplication: UIApplication 

然后NSStringFromClass将只返回“RMFApplication”。