3

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

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

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

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

  4. 为 UIView、UINib、Autolayout、...查找和使用其他一些好的类别

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

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

4

1 回答 1

2

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

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

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

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

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

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

于 2014-03-30T17:04:26.273 回答