gpt4 book ai didi

iphone - 在运行时创建一个类 - 为什么 NSClassFromString AND objc_getclass 返回 nil?

转载 作者:行者123 更新时间:2023-12-03 20:19:58 26 4
gpt4 key购买 nike

我尝试过同时使用:

NSClassFromString and objc_getclass 

返回一个类,这样我就可以在运行时创建它,但这两个函数对于某些类都返回 nil,例如“TestClass”。请注意,NSClassFromString 对我来说适用于 99% 的类。

如果我添加

[TestClass class];

在我调用 NSStringFromClass 或 objc_getclass 之前,它可以工作。如果我尝试使用类引用创建类,即:

[TestClass alloc];

它也有效。那么如何强制类在运行时加载,以便 NSClassFromString 或 objc_getclass 不会返回 nil?

最佳答案

我也遇到了同样的问题。就我而言,我有使用

查找类的代码
Class aClass = objc_getClass("Foo");

当 Foo 类与我的 AppDelegate 位于同一项目包中时,该方法有效。

作为重构代码的一部分,我将 Foo 类和关联的模型类从 AppDelegate 项目移出到一个公共(public)静态 lib 项目中,这样更容易测试和重用。

当我将 Foo 类移至 libFooBar 时,objc_getClass("Foo") 现在返回 nil 而不是 Foo 类。

为了解决这个问题,我调用了我感兴趣的类,以便 libFooBar 中的类注册到 Objective-C 运行时。我这样做是这样的:

Foo* foo = [[Foo alloc] init];
[foo release];
Class aClass = objc_getClass("Foo");

现在 objc_getClass("Foo") 再次返回 Foo 类,而不是 nil。

我只能假设静态库类在调用静态库中的类之一之前不会注册。

关于iphone - 在运行时创建一个类 - 为什么 NSClassFromString AND objc_getclass 返回 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1634644/

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