objective-c - 为客户端、服务器和插件组织框架

标签 objective-c xcode macos frameworks mac-frameworks

我正在从事一个大型项目,该项目包括一个服务器、一些用于控制可以加载到服务器进程中的设备的插件,以及可以连接到服务器的客户端。我正在寻找构建最终需要存在的框架的最佳实践。

有些头文件在客户端、服务器和插件之间共享,有些头文件特定于系统的各个方面。有时 header 仅在客户端和服务器或服务器和插件之间共享。同样,存在可以在项目的所有三个方面之间共享的通用代码,以及仅由一个特定方面需要的代码。

项目完成后,我们需要发布客户端应用程序和插件开发者 API,供第三方开发。

我不确定如何正确构建支持此功能所需的框架。

我需要有 2 个独立的框架吗?或者我可以拥有 1 个包含所有 header 并提供 2 个单独的动态库的框架吗?

如果我需要 2 个独立的框架,我该如何处理在系统各个方面共享的头文件?我不想将它们复制到每个框架中以避免版本控制可能出现的问题。

第三个仅 header 框架是否是一个合理的选择?

谁能推荐在 OS X 上使用框架构建此类事物的最佳实践?

最佳答案

框架 = 库 + 那个库的 header

每个框架只需要包含您要公开的接口(interface)的头文件。即使使用通用 header 构建所有三个框架,您也没有义务将它们捆绑在一起。

一个 3 框架方法会很好,即使其中一个框架只捆绑了公共(public)头文件而根本没有库。示例:如果您在 Mac 上安装 Qt,您会看到它分布在许多框架中,但 header 从不在它们之间重复。还有一些框架只包含头文件而没有代码(例如 QtScript.framework)。

关于objective-c - 为客户端、服务器和插件组织框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6282183/

相关文章:

ios - 无法在 iOS Swift 3 中单击 UIBarButtonItem 添加目标和运行功能

iphone - Objective-C NSMutableArray 在枚举时发生了变异?

macos - Mac 上有什么好的十六进制编辑器/查看器?

iphone - 当CGPointMake遇到大数目时

iphone - 有使用 plist 的多 map 注释演示示例吗?

ios - 字符串资源 Xcode + swift

objective-c - 启用僵尸后 EXC_BAD_ACCESS 消失

ios - 自定义单元永远不会为零(不要使用 Storyboard )

objective-c - iOS : I can't write my file

iOS 谷歌地图 SDK - 可以将当前位置蓝点标记转换为红点