使用Pod组织代码库

当涉及第三方库时,Cocoapods是救生员! 将库集成到我们的项目从未如此简单。 在没有cocoapods支持的情况下,集成库需要下载框架和捆绑软件,然后将它们拖到我们的Xcode项目中,链接到我们新添加的二进制文件,然后添加一些iOS链接器标志。 哦! 然后对每个需要使用的库重复这些操作,或者…如果任何工作失败,请重新执行此过程。 😣
所有这些都由cocoapods处理,对于我们来说,这通常是一个单行命令(在您启动pod文件并将其填充了所有必需的库之后)。

这不是有关如何使用cocoapods的文章。 掌握它非常容易,并且已经有很多方法。 相反,我们将寻求使用cocoapods的功能来组织我们的代码库。

我的作业需要重构和更新已经存在的现有应用程序。 因此,我的团队没有选择项目结构的自由。 我们必须处理的代码库具有紧密耦合的组件,并且在多个实例中重复了很多代码片段。 我们也不想破坏已经在运行的代码,因为我们必须尽早为最近发布的iOS设备提供支持。 但是团队知道当前的设计和项目结构将很快成为瓶颈。

当团队中的其他成员添加新功能和服务时,我的任务是逐步重建现有代码库。 最初,我很难确定什么是不妨碍预定发布日期的合适解决方案。 我在这里解救的一件事是椰壳足。 它帮助我解耦了代码,没有破坏功能,也没有被证明是开发过程中的决定因素。 迁移后,处理特定模块变得更加容易! 此外,以这种方式进行组织使集成新功能和SDK成为轻而易举的事。 我们从来不知道使用像这样的cocoapods可以节省我们的工作时间。

我们甚至最终私下托管了不同的模块,并将其分发给黑客马拉松和筛选过程。

好吧..如此称赞可可豆。 让我们看看魔术! 为了演示,我们考虑必须创建一个包含多个组件的应用程序。 在这里,组件是我们为组织代码而创建的pod。 从概念上讲,这将如下图所示。

请记住,始终从文件’ MyApp.xcworkspace’运行项目。 的。 一旦我们通过终端“ pod安装”以集成组件,就会创建xcworkspace文件。

按下视图内的按钮后,“ MyApp ”将在视图控制器上显示警报。 警报生成代码将驻留在我们应用程序的组件(pod)中,我们将其称为“ AlertServices ”。 因此,视图控制器将只需要处理逻辑即可在主项目中呈现和消除警报。 这些警报的创建,样式和自定义将在AlertServices内部进行。

首先,让我们在Xcode中创建一个新项目。 然后选择Cocoa Touch Framework模板。

现在,我们在项目根目录的AlertServices目录内创建一个子目录(只是为了使代码更有条理),并将其命名为MyAppAlerts。

  • 在将目录添加到项目源之后,我们然后创建一个名为MyAppAlerts的类 我将使用以前在此文件中创建的快餐栏视图,然后在这里完成工作!
  • 下一步,我们现在将移至拥有“ AlertServices.xcodeproj ”文件的目录。 在这里,我们需要创建一个新文件并将其命名为 podspec (在我们的例子中是AlertService .podspec )。 该文件的内容如下。
  Pod :: Spec.new do | s | s.name =“ AlertServices” 
s.version =“ 1.0”
s.summary =“ Objective-C中的MyApp中的AlertServices” s.description = <<-DESC
将其作为本地窗格嵌入到项目中。 这既有趣又很棒! DESCs.license =“ MIT” s.homepage =“ botfather.github.io” s.author = {“ Tushar Mohan” =>“ myEmailId@someEmail.com”} s.platform =:ios,“ 9.0”
s.source = {:path =>“。” }
s.source_files =“ ** / *。{h,m}”
s.resource =“ ** / *。{json}”
结束

在上面的podspec文件中,我们使s.source指向具有项目源的目录。 另外, s.source_filess.resource接受正则表达式作为将pod附加到项目时需要导入的文件的路径。 为了简单起见,我添加了所有.h和。 此Pod中的m个文件,如果我们的项目中有任何.json文件,该文件将被复制到Pod资源中。

有了这个,我们的吊舱就可以施展魔法了! 🎩

  • 最后,在Xcode中创建一个新项目,并将其命名为“ MyApp ”。 光盘 使用终端进入我们拥有“ MyApp.xcodeproj ”文件的目录。
  • 一旦进入目录,就可以通过pod init为项目创建一个pod文件。 修改文件的内容,使其显示为下面的代码段所示。
 平台:ios,“ 9.0”目标“ MyApp” 
#如果您使用的是Swift或想使用动态框架,请取消注释下一行
#use_frameworks!
pod'AlertServices',:path =>“ ./Components/AlertServices/AlertServices.podspec ”结束

关键是显式提供我们库的路径。 请注意, podfile和名为components的子目录是兄弟姐妹。 它们具有相同的根。 我们的AlertServices目录(包含podspec文件)位于组件内部

  • 现在,当我们通过终端进行Pod安装时,cocoapods可以处理所有事情,并且我们的组件彼此交互。

切记,一旦成功安装Pod,请从“ MyApp.xcworkspace ”运行项目。


喜欢这个职位吗? 请点击👏按钮,以帮助其他人找到此信息。