isMemberOfClass与静态库链接两次

时间:2013-03-16 00:08:29

标签: objective-c static-libraries nsbundle quartz-composer

我正在处理Quartz Composer的几个插件,这些插件都链接到在bundles frameworks文件夹中为每个插件复制的相同的自定义静态库。插件可以单独使用,所以我必须在每个插件中分发库。

除了 isMemberOfClass isKindOfClass 方法外,一切顺利。我读了here,导入两次相同的类可能是问题的根源。

编译时没有错误。

假设我有两个包含lib XCode项目的插件(NSBundles)并在链接之前编译它。 它们都将lib复制到其资源文件夹中。 然后,它们都从该库中实例化自定义 hOzPolygon2D 类。

第一个插件返回true,用isMemberOfClass方法测试 hOzPolygon2D 对象。 第二次返回false。 isKindOfCLass方法返回相同的“错误”。

在我的案例中,我无法想象一个解决方案。我真的不是一名编辑专家,非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您应该单独分发静态库(可能作为自己的框架)。从问题标题我假设您看到来自链接器的重复符号错误。如果将相同的静态库静态链接到多个其他库,然后尝试将应用程序链接到多个库中,则必然会看到这些重复的符号问题。我实际上没有尝试使用框架,但我知道将iOS应用程序与相互依赖的静态库相关联时会遇到这个问题。

您不必担心模块可以单独使用。只需确保您的用户也可以获得基本库。这是正常情况。例如,AppKit和UIKit依赖于Foundation,但它们都不包含Foundation的副本