【问题标题】:Suggestions for designing a modular iOS project?设计模块化 iOS 项目的建议?
【发布时间】:2012-08-20 12:52:16
【问题描述】:

我在programmers.stackexchange.com 上阅读了几个问题,以确定该问题是否更适合在那里提出。我认为这个问题属于 SO,但我不完全确定。

我对 Objective-C 和 UIKit 有基本的了解。几年前,我读过 Aaron Hillegass 的大部分Cocoa Programming for OS X (2nd Edition);这就是我大部分知识的来源。其余的来自各种网站、SO 问题、SDK 文档和小型个人项目(OS X 和 iOS)。

我正在为我工​​作的大学启动一个 iOS(特别是 iPhone)项目。此应用程序将具有具有不同功能的不同部分。 “部分”的一些示例是:虚拟学生证、当前学期的课程表(针对用户)、校园地图等。我希望能够在应用程序的未来版本中轻松添加新部分。因此,我想设计项目,使一个部分独立于主项目的代码组(尽可能)。

除了能够通过创建新模块来添加新功能之外,我还希望项目能够被更多开发人员使用,而不仅仅是我自己。也就是说,我希望团队中的其他开发人员能够按照“最佳实践”为应用程序开发新模块。

目前,我的项目基于UITabBarController,我的“模块”是新的UIViewControllers 和NIB。我觉得这可能不是建立我的项目的最佳方式。因此我的问题是:

对于我所描述的此类项目,有哪些最佳实践?

【问题讨论】:

    标签: ios ios5 uikit


    【解决方案1】:

    我认为你在正确的轨道上。 UIViewControllers 是打破这种情况的好方法。

    当你有很多选择时,UITabBarControllers 通常会很尴尬;带有可能性表格视图的欢迎屏幕可能更具可扩展性。例如,请参阅 Facebook 的左侧面板或内置的“设置”应用。

    我通常发现,在 iOS 项目中重用的难点不是视图控制器(它们通常被很好地隔离),而是底层基础架构,例如用于网络请求、数据存储、帐户管理等的基础架构。您可能想要从一个现有的框架开始(比如 Parse 或 RestKit),或者至少看看它们是如何分解的。

    关于良好的、可重复使用的 iOS 设计主题,您可能会发现 Matt Gemmell's post about API design 很有帮助,如果不是您想要的。

    【讨论】:

    • +1 用于 tableView 推荐。 TabViews 只有在有 >=5 个视图时才真正有用。
    • 我将 Grails 用于服务器端框架(无论好坏)。我目前对选项卡视图的计划是有一个“更多”按钮,该按钮可以引导不太重要的(?)模块的表格视图。我想做一个跳板式的界面,但是现在从头写一个有点过头了,我还没有找到我喜欢的第三方组件(我听说可能在 iOS6 中可用)。跨度>
    • 阅读您的编辑。我喜欢设置应用界面的建议。
    • 我认为无论您在 iOS 6 中读到了什么,从头开始创建一个跳板式 UI 仍然需要大量工作。此外,在准则 10.5“创建备用桌面/主屏幕环境或模拟多应用小部件体验的应用将被拒绝”下,类似界面的应用已被拒绝
    【解决方案2】:
    • 建立编码风格和资源位置的约定。
    • 开发静态库。
    • 如果您的静态库需要自己的资源(这可能是一个必要的痛苦),您可能希望为您的资源使用捆绑包以最大程度地减少资源冲突。
    • 集中您的构建配置文件,而不是尝试在每个项目中定义每个设置(使用 xcconfigs)。

    然后您可以将这些库配置为您的应用项目中的依赖项,并适当地构建、链接和复制。

    一个重要的注意事项:在这些情况下(如果适用),我经常对 C 和 C++ 符号犯错,因为 ObjC 符号(以及它们引用的内容)不能被​​剥离。这可以减少很多不使用的“二元脂肪”。因此,您的“核心”库和主要处理在其他库(例如系统库)中声明的符号的库可能在 C 和 C++ 中,而您的更高级别的抽象和派生类型可能在 ObjC 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-02
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多