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

And*_*eas 4 objective-c uiapplication ios swift

我有一个用Objective-C编写的项目,我刚刚使用Swift添加了一个UIApplication子类:( RMFApplication.swift在帖子末尾实现).但是,我收到此错误:

由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法实例化UIApplication子类实例.没有加载名为RMFApplication的类.

  • 在我的info.plist中,我在NSPrincipalClass下正确指定了名称,并仔细检查了它.
  • 我读了这个答案然后看了我自己main.m说的:return UIApplicationMain(argc, argv, nil, NSStringFromClass([RMFAppDelegate class]));.
  • 文档UIApplicationMain说if if nil被指定为thrid值然后UIApplication被假设,但为什么我的错误消息包含我的自定义类名?我必须假设nil它将读取info.plist值.

注意:子类化UIApplication适用于RMFApplication.hRMFApplication.m.唯一改变的是重命名这些文件和添加一个RMFApplication.swift文件,它编译时没有任何警告:

import UIKit

class RMFApplication: UIApplication {

    override func openURL(url: NSURL) -> Bool
    {
        println(url.description)
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以继续使用Objective-C,但我想尝试迁移到Swift,除非两者真的不能很好地结合在一起.

MAN*_*rii 5

也许这是因为它使用NSStringFromClass或其他东西,因此在Swift中RMFApplication被"损坏"并变成类似"somePrefix"的RMFApplication(或者与"RMFApplication"不同的东西).

你可以试试这个:

@objc(RMFApplication) class RMFApplication: UIApplication
Run Code Online (Sandbox Code Playgroud)

然后NSStringFromClass将返回"RMFApplication".