如何声明稍后可用的 Cocoa 类?
How to declare Cocoa classes which WILL be available later?
首先我不得不说我在 Objective-C 中远不是一个好的程序员。
我的问题是我想开发一个插件(在这种情况下最终是一个 dylib)声明一些 Cocoa classes。该插件将首先加载,以便其他插件能够使用已在 ObjC 运行时中声明的 classes。
不幸的是,我在尝试编译其他插件时总是出错,因为缺少一些 classes。我认为提供 .h 文件或@class 就足够了,但不行。
我如何告诉编译器某些 classes 将在需要时从运行时可用?
如果您的 类 定义在其他二进制文件中,您需要在构建设置中指定 BUNDLE_LOADER
键,以便链接器可以找到那些依赖的符号。 (注意:.h 文件仅供编译器查找接口声明时需要)。
解决方案实际上很简单,因为我只需要 weak-link 针对第一个插件中的动态库。
即使 dylib 实际上嵌入在 zip 存档中,主应用程序也会将其加载到内存中并使其可供其他插件使用。
感谢大家的留言。
首先我不得不说我在 Objective-C 中远不是一个好的程序员。
我的问题是我想开发一个插件(在这种情况下最终是一个 dylib)声明一些 Cocoa classes。该插件将首先加载,以便其他插件能够使用已在 ObjC 运行时中声明的 classes。
不幸的是,我在尝试编译其他插件时总是出错,因为缺少一些 classes。我认为提供 .h 文件或@class 就足够了,但不行。
我如何告诉编译器某些 classes 将在需要时从运行时可用?
如果您的 类 定义在其他二进制文件中,您需要在构建设置中指定 BUNDLE_LOADER
键,以便链接器可以找到那些依赖的符号。 (注意:.h 文件仅供编译器查找接口声明时需要)。
解决方案实际上很简单,因为我只需要 weak-link 针对第一个插件中的动态库。
即使 dylib 实际上嵌入在 zip 存档中,主应用程序也会将其加载到内存中并使其可供其他插件使用。
感谢大家的留言。