【问题标题】:How to write good base classes for iOS projects? [closed]如何为 iOS 项目编写好的基类? [关闭]
【发布时间】:2014-03-30 16:47:14
【问题描述】:

我为 iOS 开发了一段时间的应用程序,发现有很多重复的任务。所以我想编写即将到来的项目将子类化的基类,这样可以更轻松地跨项目跟踪代码。最关心的是

  1. 编写良好的基础模型类,该类具有许多策略(核心数据、归档等)。这个模型类也有一些 JSON 到属性的转换技术,比如 Mantle,所以设备上的模型和服务器上的模型是一样的

  2. 编写好的基础网络类(主要使用 AFNetworking)

  3. 编写好的基础 ViewController 类。我看到一些重复的任务:避免使用 ScrollView 的键盘、日志记录、崩溃跟踪、从 Nibs 加载视图,...

  4. 为 UIView、UINib、Autolayout 等寻找并使用其他一些好的类别...

这些只是我的担忧。这似乎是一个模糊的话题,我不问如何使用库或如何制作可重用的组件。

我只是想问一下制作这些基类的经验以及我可以从哪里学习

【问题讨论】:

  • 人们什么时候会意识到这一点:AFNetworking 已经过时,您应该使用 NSULRSession。此外,如果您想提高处理上述 4 点的能力,请从阅读 4 人帮的书开始,并在您自己的应用程序中识别这些模式。不要使用 3rd 方库,它们很少会给您带来附加值。
  • 错了。从 2.0 版开始,AFNetworking 已经在使用 NSURLSession。至于不要使用 3rd 方库,那么您应该尝试编写自己的 PDF 解析器。

标签: ios class base-class projects github-mantle


【解决方案1】:

你不是唯一一个对此有问题的人,我在许多项目中都遇到了同样的问题。 所以这个问题的最佳解决方案是开源库。 好的库通常会经常更新并跟上 Apple 的 SDK 版本。我将解释如何将样板代码保持在最低限度。

  1. 基础模型 - 因为我只使用网络和核心数据模型,所以我将 MagicalRecord 用于核心数据,JSONModel 用于基于网络的模型(映射到 API 响应)。

  2. 网络类 - 与 AFNetworking 和前面提到的 JSONModel 相结合,我没有发现需要其他任何东西。我可以轻松地扩展那些具有类别的内容。

  3. 有很多库可以避免UITextFieldUIScrollView 中使用键盘,但大多数情况下我只是使用自定义代码。但如果我需要,我关注TPKeyboardAvoiding。对于崩溃跟踪,我只使用CrashlyticsFlurry,它们提供了自己的SDK,所以我不需要太多代码。而且我不再使用NIB了。

  4. 网络上有许多有用的类别。我创建了自己的存储库作为 CocoaPod,它将所有有用的类别保存在一个 pod 中。我使存储库保持最新,并在需要时添加新类别和小类。它的缺点是您通常不需要所有这些,因此有时会加载太多代码。但直到现在我还没有注意到任何性能下降。如果你愿意,你可以看看GitHub,它的样子。

不要忘记项目初始化,我一直在开发自己的自定义 Xcode 项目模板来解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-02
    • 2010-11-06
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2023-03-23
    • 2011-12-03
    • 2013-07-03
    相关资源
    最近更新 更多