Xcode项目管理:单引擎 - 不同的个性化应用程序

Mar*_*aev 9 iphone xcode objective-c ios

我的想法是我有一个应该为不同客户定制的应用程序模板.主要目标是提供具有几乎相同功能的多个个性化应用程序.

Xcode项目组织(也许是管理层)的最佳方法是什么,以便为每个客户的应用程序实现以下几点:

  1. 始终为视觉元素设置不同的图像(用于控件,视图,图标等);
  2. 用于小型UI结构修改的XIB文件很少;
  3. 可视化自定义 - 代码级别;
  4. 小功能修改;
  5. 可以切换回以前的个性化版本;
  6. 一个功能引擎(例如搜索功能);

目前,对于每个个性化请求,我在同一项目的根目录中创建新项目文件,以及相应的XIB文件,图像集源文件(对于某些功能请求)目录.每个项目文件都有对主源文件目录(引擎)的引用.

但我认为这不是组织此类项目的最佳方式.

pau*_*ley 10

我可能会选择使用版本控制来执行此类操作,并为每个自定义版本保留单独的分支.这样,master/trunk可以是你的非自定义代码.

当您需要创建自定义版本时,只需创建另一个分支.如果您的核心应用程序需要更改,将更改从trunk更改为分支应该是直截了当的,这使您可以将所有自定义代码/文件分开.

我不知道这对你的工作流程来说有多么容易,但我认为它可以解决所有问题,包括能够切换回以前的版本.


jus*_*tin 2

创建一个项目模板——或者只是包含该模板的 zip 文件。

首先,确定可以在哪里使用(例如)xml defs,而不是覆盖和其他源级别更改。

始终为视觉元素(控件、视图、图标等)设置不同的图像;

将占位符资源添加到项目模板

很少有不同的 XIB 文件用于小的 UI 结构修改

将其添加到项目中,通过 vc 引用更改(如果已更改)

视觉定制——代码级别;

核心库,在所有项目之间共享。如果库很大,请考虑使用 c 或 c++。objc 无法被剥离。其中包含实现存根以及公共代码、基类和接口。

小功能修改

扩展核心类的接口,以便子类可以轻松实现频繁的更改。这些文件是模板的一部分。

可以切换回以前的个性化版本;

它应该在 vc 中,并且还应该跟踪依赖项版本。

一个功能引擎(例如搜索功能);

未定义的工厂函数非常简单:

id<MONSearchEngineProtocol> MONAppCoreCreateSearchEngine();
Run Code Online (Sandbox Code Playgroud)

在静态库中声明它,但在项目特定源之一中定义(并实现必要的内容)。您可以将其添加到其他位置 - 有些人会将其填充到应用程序控制器中并覆盖它。

如果您有很多需要管理,请考虑将资源转移到代码中(而不是管理大量的 nib)。一个 nib 定义了很多代码——这是很多需要管理的几乎重复的代码。这对于某些资源有意义,而对于其他资源则没有多大意义。