【问题标题】:Which project template should I use for an iOS and Cocoa library?我应该为 iOS 和 Cocoa 库使用哪个项目模板?
【发布时间】:2012-03-27 07:23:38
【问题描述】:

我在一个 iOS 项目(名为“MyLibs”)中有一堆代码,我在不同的应用程序中重复使用。我将 MyLibs 项目拖到我正在创建的任何应用程序的工作区中。我本身不使用单元测试,但我有按钮,而不是在 iPhone 应用程序中轻松运行所有测试。

我正在学习 Cocoa,并希望将我的库划分为可以在两个项目中使用的库。我在想应该是 MyCommonLibs(或 MyFoundationLibs)、MyIOSLibs 和 MyCocoaLibs。

但是,在创建新项目时,我必须在 iOS 应用程序或 Cocoa 应用程序之间进行选择。看起来 iOS 框架和库 -> Cocoa Touch 静态库是合适的,因为它链接到 Foundation 框架。另一方面,如果没有重大缺陷,我更喜欢使用应用程序模板。

我需要能够在两种应用类型中使用 MyCommonLibs,因为其中一些对两者都有用,例如 NSArray 类别等。

我应该为 MyCommonLibs 使用哪个模板,我必须使用库、框架(在 Mac OS 模板中)还是只能使用普通的应用程序模板(就像我迄今为止所做的那样)?

【问题讨论】:

  • MyCommonLabs 项目是否只是您打算在各种实际项目中重用的一些代码的容器?在这种情况下,您可以简单地使用 iOS/other/empty。如果您想将其用作 satic 库并将其作为框架包含在您的实际项目中(不仅仅是创建代码的本地副本,而是真正共享相同的代码),那么您应该使用 iOS/Framework&Library/Cocoa touch 静态库。

标签: iphone ios macos cocoa foundation


【解决方案1】:
  1. 创建一个 iOS 框架和库项目。我们称之为 TestLib

  2. 添加类型为 MAC OS X Framework & Library 的新目标(文件 > 新建 > 目标)。

这样,您可以从同一个项目编译 iOS 库和 MAC OS X 库。

您可以选择每个目标中包含哪些文件。因此,如果你想让一个类同时适用于 iOS 和 MAC OS X,你可以将它添加到两者中,如果你想让它只适用于一个平台,你可以将它添加到一个库中。

正如您在下面的屏幕截图中所见,SharedClass 在两个库中都可用,iOSOnlyClass 仅适用于 iOS,MACOnlyClass 仅适用于 MAC OS X。

您还可以在同一项目中添加单元测试的目标。

要组织您的代码,您可以将共享类放在一个组中,并将每个目标的类放在一个单独的组中。

【讨论】:

  • 当我在某些文件中有 iOS 代码而在其他文件中有 Cocoa 代码时,XCode 不会抱怨?
  • 另外,我会使用“Cocoa Framework”还是“Cocoa Library”作为第二个目标?
  • "你可以使用你方便的类型" 嗯,我在哪里可以找到哪个更方便? ;) 我只是想将这些文件包含在其他项目中,但我也希望能够在这个项目中测试它们。
  • 非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-03
  • 1970-01-01
  • 2010-12-28
  • 1970-01-01
  • 1970-01-01
  • 2013-06-26
相关资源
最近更新 更多