And*_*eas 4 objective-c uiapplication ios swift
我有一个用Objective-C编写的项目,我刚刚使用Swift添加了一个UIApplication子类:( RMFApplication.swift在帖子末尾实现).但是,我收到此错误:
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法实例化UIApplication子类实例.没有加载名为RMFApplication的类.
main.m说的:return UIApplicationMain(argc, argv, nil, NSStringFromClass([RMFAppDelegate class]));.UIApplicationMain说if if nil被指定为thrid值然后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;
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以继续使用Objective-C,但我想尝试迁移到Swift,除非两者真的不能很好地结合在一起.
也许这是因为它使用NSStringFromClass或其他东西,因此在Swift中RMFApplication被"损坏"并变成类似"somePrefix"的RMFApplication(或者与"RMFApplication"不同的东西).
你可以试试这个:
@objc(RMFApplication) class RMFApplication: UIApplication
Run Code Online (Sandbox Code Playgroud)
然后NSStringFromClass将返回"RMFApplication".