gpt4 book ai didi

iphone - +(void)load 消息未发送到设备运行时的框架类

转载 作者:可可西里 更新时间:2023-11-01 17:02:32 27 4
gpt4 key购买 nike

我已经在此处搜索了有关 SO 的问题,以寻找关于为什么我会看到这种行为的任何提示,但目前还没有。


考虑一个类(实际上是两个表现出相同问题的类),内置到一个静态库中,包装在一个框架包中(steps used)。它们继承自 Foundation 框架 class clusters (NSMutableDictionaryNSMutableArray)。

这些类的使用依赖于在使用静态函数(不是类方法!)分配和初始化实例(我猜是一种工厂辅助函数? ).

当 iOS 应用程序项目链接到该框架时,模拟器和设备之间的 Objective-C 运行时类加载行为会有所不同。

具体来说,在设备(iPhone 4、iOS 4.3.3)上加载应用程序时,这些类不会收到 +load 消息,并且静态变量不会初始化,因此静态工厂方法失败。在模拟器上,消息被发送,并且一切都按预期工作。设备运行时是否有问题

我的问题是,我的框架是否可以进行不同的配置以确保发送 +load 消息?还是我在 iOS 中遇到静态库/框架类加载错误?


类(class)来自JSONKit库(JKArrayJKDictionary)。

说明此问题的示例项目在这里 – https://github.com/ohhorob/JSONKit-in-framework-demo


编辑:根据@bbum 的建议,我已经验证了 JKDictionaryJKArray 类实际上已加载并且在应用程序运行时可用。 GitHub 项目上的 DeviceBroken 分支更新了使用的验证。

我向 Apple 提交了错误报告 (#9461567)。

最佳答案

+load 方法没有被调用,因为您实际上并没有创建一个静态库,而是一个可重定位目标文件。如果您使用 make-fmwk 创建静态框架或 iOS Universal Framework模板,然后将按预期调用加载方法。

关于iphone - +(void)load 消息未发送到设备运行时的框架类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6047903/

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