Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 使用静态库时发生iOS NSKeyedUnachiver错误_Iphone_Xcode_Static - Fatal编程技术网

Iphone 使用静态库时发生iOS NSKeyedUnachiver错误

Iphone 使用静态库时发生iOS NSKeyedUnachiver错误,iphone,xcode,static,Iphone,Xcode,Static,我制作了一个自定义静态库,用于iOS项目。当我使用NSKeyedUnarchiver来取消归档数据时。当我试图在库中使用它时,它抛出一个异常。我试图将静态库中的类复制到我的项目中,看看这是否可行,这是否解决了问题,但显然违背了静态库的目的。我还尝试了发布/调试和模拟器/设备的几种组合,但仍然不起作用 NSKeyedUnarchiver在查找需要取消归档的类时遇到困难吗 编辑 我跟踪了抛出的异常,它说不能取消归档类JGObjectRep,它是静态库中的其他类之一。请记住,如果我将这些复制到项目中,

我制作了一个自定义静态库,用于iOS项目。当我使用NSKeyedUnarchiver来取消归档数据时。当我试图在库中使用它时,它抛出一个异常。我试图将静态库中的类复制到我的项目中,看看这是否可行,这是否解决了问题,但显然违背了静态库的目的。我还尝试了发布/调试和模拟器/设备的几种组合,但仍然不起作用

NSKeyedUnarchiver在查找需要取消归档的类时遇到困难吗

编辑
我跟踪了抛出的异常,它说不能取消归档类JGObjectRep,它是静态库中的其他类之一。请记住,如果我将这些复制到项目中,这就可以了。

对不起,我不知道这里使用的静态lib的特殊性,但我还记得其他平台的一些想法

首先,问题似乎是类信息对运行时系统不完全可用,因此出现了错误

因此,静态库要么不包含所需的信息,要么链接器不传递信息。在后一种情况下,除非您能找到启用此功能的额外链接器选项,否则您就完蛋了。因此,请阅读链接器手册,查看是否有相关选项

在前一种情况下,您可以首先使用工具查看导出的符号(我相信“nm”可以做到这一点),以验证类名及其结构描述是lib中符号的一部分。我不知道它会是什么样子,但也许谷歌能帮上忙

另一个想法是:主代码是否引用了特定的类?否则,链接器可能不会将其包含在最终代码中,因为它认为它只在静态库的环境中使用,因此其他地方不需要它。因此,请尝试查看编译器或链接器的命令选项中的声明或源代码中的pragmas是否允许您使该类成为全局已知的类


祝你好运

尝试将这些选项添加到链接器标志中: -ObjC
-哦,如果你想知道的话,请告诉我们,因为我对此也很好奇!能否直接在代码中创建JGObjectRep对象?有了这些代码,NSKeyedUnachiver找到类了吗?是的,当我在代码中创建一个JGObjectRep时,它工作得很好。是的,你能解释一下它到底是做什么的吗?