iOS可重用组件

4
在我从事iOS应用开发的工作中,我注意到几乎每个应用都有一些重复的部分。例如,每个应用都有用户管理逻辑,登录、注册、忘记密码等功能。因此,每次我都需要手动导入已经开发好的逻辑(视图控制器、nibs、storyboards)。
我的问题是,我该如何将这些常见的功能封装到一个单独的组件中,以便在每次启动新项目时可以简单地重用它们。同时,还要注意到在组件中应该具有自定义的可能性,例如所有应用程序都有登录屏幕,但每个应用程序的UI设计各不相同。
简而言之,我需要以下内容:
1.如何将常见的重复功能封装到单独的组件中。 2.如何将组件注入到新启动的项目中。 3.如何在不改变组件核心的情况下对组件进行定制。
我猜测这里应该结合Framework(或静态库)和cocoa pods来实现,但我想听听是否已经有人对此提出了一些概念。
2个回答

5
是的,正如您所想,我选择重复使用组件的方法是通过静态库或有时是可重用组件的框架,实现公共逻辑或结构良好的类,以便在新项目中继承,并将其作为CocoaPods开发库提供给新项目,在我的开发计算机上或共享git存储库中。这样回答了您的第1和第2个问题。对于您的第3个问题,您可以选择执行自定义操作以关闭pod更新,或者调整核心方法以适应目标项目中可能存在的覆盖。希望对您有所帮助。

对于第三个问题,您可以尝试使用IBInspectable属性,并通过storyboard配置每个项目中的组件(考虑到它是可视化组件)。 - dosdos
对于第三点,我会选择委托模式(参见UICollectionView、UITableView等),这在Cocoa Touch中被广泛使用。 - Julian

1

如何将常见的重复特性封装在单独的组件中。

无论您选择什么,都需要将单独组件所需的代码从代码库中分离出来。这是整个过程的第一步 - 因此,请仔细考虑是否有必要将其转换为单独的组件。

现在您有一些要重用的代码...

有许多方法可以做到这一点,例如Xcode的工作区, 独立的源文件,静态库和框架。 CocoaPods是一个软件包管理器,将帮助您维护您的框架 - 而不是编写它 :(

Xcode的工作区

一个工作区是Xcode文档,用于将项目和其他文档分组,以便您可以一起处理它们。 工作区可以包含任意数量的Xcode项目,以及您想要包括的任何其他文件。 除了组织每个Xcode项目中的所有文件外,工作区还提供了所包含项目及其目标之间的隐式和显式关系。
使用静态库介绍
静态库为在多个应用程序之间共享代码提供了方便的机制。 在iOS上,静态库是唯一支持的库类型。 本文档说明如何从应用程序中提取代码到新的静态库中,以及如何在多个应用程序中使用该静态库。
框架 Frameworks 在OS X中,共享资源使用标准框架和Umbrella框架打包。这两种类型的框架具有相同的基本结构,并且可以包含共享库、nib文件、图像文件、字符串文件、信息属性列表、文档、头文件等资源。Umbrella框架对标准框架结构进行了微小的改进,例如能够包含其他框架。
框架以捆绑包结构打包。框架捆绑目录以“.framework”扩展名结尾,并且与大多数其他捆绑包类型不同,框架捆绑包以目录形式而不是文件形式呈现给用户。这种开放性使得开发人员可以轻松浏览包含在框架中的任何头文件和文档。
源文件
这些是您已从代码库中分离出的类。您可以将它们直接包含在每个项目中 - 例如单独的存储库,其中包含所有共享/通用代码,您将其添加到Xcode项目的工作区。非常简单,但不易于维护。
如何在新启动的项目中注入组件。
根据您选择实现公共代码的方式将影响此步骤。对于源文件,您只需要将它们添加到项目并设置目标即可。对于框架或静态库,您需要将它们嵌入到您的项目中
对于工作区,您将把包含共享代码的项目添加到主项目的工作区中。
如何在组件中进行自定义,而不更改组件核心。
同样,您可能会重构代码,以便公开您想要自定义的UI控件或逻辑函数。一般规则是,您公开的越多,代码就越复杂。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接