【问题标题】:What are ways to modularize an iOS App? [closed]模块化 iOS App 的方法有哪些? [关闭]
【发布时间】:2015-04-03 12:16:36
【问题描述】:

如果我有一个大项目并且有几个功能。这些功能将由另一个开发人员在另一个 iOS 项目中独立开发。这些功能可以包括 UIViewcontrollers、Navigation 和其他 iOS 应用程序通常具有的东西。然后我有主应用程序,其中功能项目将集成到 xcode 工作区中。如何从主应用程序/项目中引用其他功能项目?我尝试从情节提要中加载视图控制器,但似乎找不到它。我也尝试使用构建阶段添加,但我无法使其工作。

我读了这篇文章Using CocoaPods To Modularize Big iOS Apps。该博客谈到使用我试图避免的 cocoapods。我似乎没有找到说它适用于 SVN 的东西,这就是我不会将它用于我需要的东西的原因。有框架选项,但我正在寻找更好的解决方案。

【问题讨论】:

  • 为什么要避免使用 Cocoapods?您遇到的具体问题是什么?
  • 它是否适用于 SVN?
  • 我同时使用 Cocoapods 和 SVN。到目前为止,我还没有任何问题。你有什么问题?
  • user1539874:Cocoapods 只需要一个 Podfile 并生成一个 xcworkspace 和一个 Podfile.lock 文件。您选择的源代码控制方法可以忽略其余部分。它适用于 SVN。
  • 我尝试用 SVN 研究 cocoapods 的结果都表明某种失败。我会尝试用 CocoaPods 来设置它。

标签: ios objective-c xcode architecture dependency-management


【解决方案1】:

Cocoapods 可以帮助您将子项目集成到一个主项目中。除了 cocoapods,你还需要一个模块化框架来帮助你使用这些子项目的代码。比如子项目A需要使用子项目B的视图控制器,但是A无法获取B中的.h文件,这确实是个问题。我在 iOS 中有一个名为 TinyPart 的开源模块化框架,可以帮助您了解 iOS 中的模块化。 https://github.com/RyanLeeLY/TinyPart

【讨论】:

  • 我对此表示赞同,因为您的回答导致了一个好的答案
【解决方案2】:

查看here,了解如何从另一个项目/框架加载其他情节提要的视图控制器。不确定它是否正是您正在寻找的,但它似乎是一个类似的问题

根据上面链接中的指南,您可以查看Developing the Framework as a Dependent Project

【讨论】:

    【解决方案3】:

    您可能希望遵循正确的模式,其中软件组件依赖于抽象而不是具体的实现。请查看http://www.oodesign.com/dependency-inversion-principle.html

    将该功能作为库项目,然后可以单独开发,然后卡在沙盒项目中进行开发。完成后,将其粘贴回您的主项目。

    您应该为该功能声明一个接口(或者在 Objective-C 中您称之为协议),以便您的主项目知道如何使用它。对该协议进行虚拟实现,将其粘贴到主项目中,因此在开发库时,您仍然可以继续主项目的开发。

    【讨论】:

    • 感谢您的意见。是的,我确实实现了一个完全解耦的架构,类似于 SOLID 拱门。我将它应用于我的项目,我现在的问题是上述实现。是的,我可以将功能项目集成为框架或通过其他方式,只要我可以将它们链接并构建为一个。一旦我完成了这项工作,那么与我的团队其他成员一起工作时我的问题就会减少。
    • 您的应用程序模块化进展如何?你有没有发现什么特别好的方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 2012-07-06
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    相关资源
    最近更新 更多