在OSX和IOS应用程序之间共享代码的最佳实践

时间:2012-09-17 07:52:15

标签: ios xcode macos cocoa static-libraries

我正在创建现有OSX应用程序的iOS版本,并且想知道在两者之间共享代码的最佳实践是什么。 有问题的代码仅取决于基础框架和Sqlite动态库,因此它应该在两个平台上编译并运行良好。

在我看来,有三种可能的选择:

  1. 使用OSX和IOS目标创建单个项目,根据需要将源文件添加到每个目标。
  2. 为OSX和IOS应用创建两个单独的项目,将共享代码放在工作区中的公共位置,并将其添加为两个项目的参考。
  3. 创建三个项目:OSX应用程序,IOS应用程序和带有OSX和IOS目标的共享静态库;将每个库目标添加到相应的应用程序。
  4. 上述方法之一是否有可能比其他方法更好?如果没有,选项2似乎是最简单的。

1 个答案:

答案 0 :(得分:4)

我做到了这一点并采取了第三种方法;一个单独的静态库。我选择这种方法的原因是因为它可以保存在自己的git仓库中,并在以后与其他项目共享。

然而,要克服的一件事是确定您正在编译的平台。我使用以下代码片段解决了这个问题,该片段定义了SYSINFO_IOSSYSINFO_OSX,然后在库源/头文件中使用:

#import <TargetConditionals.h>

#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
#define SYSINFO_OSX 1
#else
#define SYSINFO_IOS 1
#endif

此片段应位于其自己的头文件中。