我制作了一个我在iOS项目中使用的自定义静态库。当我使用NSKeyedUnarchiver取消归档数据时。当我尝试在库中使用它时会抛出异常。我尝试将我的静态库的类复制到我的项目中,以查看它是否有效并解决了问题,但显然无法实现静态库的目的。我还尝试了几种发布/调试和模拟器/设备的组合,但仍无效。
NSKeyedUnarchiver难以找到解压缩所需的类吗?
修改 我追踪抛出的异常,它说它无法解压缩类JGObjectRep,这是静态库中的其他类之一。请记住,如果我将这些复制到项目中,这种方法就可以了。
答案 0 :(得分:5)
尝试将这些选项添加到您的链接器标志: -ObjC -all_load
答案 1 :(得分:1)
很抱歉,我不知道这里使用的静态库的特殊性,但是我还记得其他平台上的其他一些想法。
首先,问题似乎是类信息不能完全用于运行时系统,因此错误。
Ergo,静态库要么不包含所需信息,要么链接器不传递信息。在后一种情况下,除非您能找到启用此类功能的额外链接器选项,否则您需要干杯。因此,请阅读链接器手册以查看是否存在相关选项。
在前一种情况下,您可以先使用工具查看导出的符号(我相信“nm”可以这样做)以验证类名及其结构描述是lib中符号的一部分。我不知道它看起来如何,但也许谷歌有帮助。
另一个想法:主要代码是否引用了该特定类?如果没有,链接器可能不会在最终代码中包含它,因为它表示它仅在静态lib的环境中使用,因此在其他地方不需要。因此,尝试查看编译器或链接器的命令选项中的声明或源代码中的编译指示是否允许您使该类全局已知。
祝你好运!