我已经在这里搜索了关于 SO 的问题,寻找任何关于我为什么会看到这种行为的提示,但还没有。
考虑一个类(实际上是两个表现出相同问题的类),内置在一个静态库中,包装在一个框架包中(使用的步骤)。它们继承自 Foundation 框架类集群(NSMutableDictionary
和NSMutableArray
)。
这些类的使用依赖于在静态函数(不是类方法!)用于分配和初始化实例(我猜是一种工厂辅助函数?)之前初始化的一些静态变量。
当 iOS 应用程序项目链接到该框架时,模拟器和设备之间的 Objective-C 运行时类加载行为会有所不同。
具体来说,在设备(iPhone 4、iOS 4.3.3)上,当加载应用程序时,这些类没有收到+load
消息,并且静态变量没有初始化,因此静态工厂方法失败。在模拟器上,消息被发送,并且所有工作都按预期进行。设备运行时是否有问题
我的问题是,可以对我的框架进行不同的配置以确保+load
发送消息吗?还是我在 iOS 中遇到了静态库/框架类加载的错误?
这些类来自JSONKit库 ( JKArray
, JKDictionary
)。
这里有一个说明这个问题的示例项目——https: //github.com/ohhorob/JSONKit-in-framework-demo
编辑:根据@bbum 的建议,我已经验证了JKDictionary
和JKArray
类实际上在应用程序运行时已加载并且可用。DeviceBroken
GitHub 项目上的分支已使用所使用的验证进行更新。
我向 Apple 提交了错误报告 (#9461567)。