gpt4 book ai didi

ios - 带有 Swift UIApplication 子类的 Objective-C 项目。错误 : class not loaded

转载 作者:搜寻专家 更新时间:2023-10-31 08:27:41 25 4
gpt4 key购买 nike

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

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Unable to instantiate the UIApplication subclass instance. No class named RMFApplication is loaded.'

  • 在我的 info.plist 中我正确指定了名称NSPrincipalClass,并仔细检查它。
  • 我读了this answer然后查看我自己的 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,除非两者真的不能很好地协同工作。

最佳答案

可能是因为它使用了 NSStringFromClass 之类的东西,所以在 Swift RMFApplication 中是 "mangled" and becomes something like "somePrefix"RMFApplication (或任何与“RMFApplication”不同的东西)。

你可以试试这个:

@objc(RMFApplication) class RMFApplication: UIApplication

然后 NSStringFromClass 将只返回“RMFApplication”。

关于ios - 带有 Swift UIApplication 子类的 Objective-C 项目。错误 : class not loaded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26213279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com