Objective-c类设计/组织

时间:2012-08-13 16:06:45

标签: objective-c ios

我创建了我的第一个iPhone应用程序,在桌面视图中显示类似类型的音轨。用户可以使用类似ipod的控件播放音频曲目,这些控制可以播放mp3。

我的所有代码都在两个主要类中:RootViewControllerCustomCell

我的RootViewControllerClass非常庞大。我假设设计很差,几乎把我所有的代码都放在一个类中?

最初,我认为这是有道理的,因为我只有一个视图控制器。为了练习更好的编码约定,我想将我的RootViewController类拆分成更小的特定类(假设这是正确的做法?)。

以下是我计划将其分为单个类的RootViewController组件:

  • DataSource - 从服务器提取数据;修改和组织tableView
  • 的数据
  • TopChartsView - 在视图中包含按钮,按最高评分每周/每月/所有时间修改音轨(dataSource)
  • GenreChange - 在视图中包含按类型过滤dataSource的按钮
  • AudioPlayerControls - 包含视图中与iPod控件类似的按钮

我是否正确组织课程?似乎有意义的是我按功能组织我的类。但是,我很难理解类在理想设计中应该如何相互交互。

我是否使用协议和委托将我的课程链接在一起?

2 个答案:

答案 0 :(得分:1)

设计iOS应用程序主要是关于MVC设计模式,这意味着您将模型,视图和控制器分开。在您的情况下,我会将DataSource逻辑放在一个单独的文件或文件中(这是您的模型)。这也使得在稍后的点中更容易在另一个视图控制器中重用相同的逻辑。如果有很多代码驻留在那里,也许你也可以继承你的UITableView。

协议和委托是连接类的好方法,它们经常用于良好的设计中。由于你的应用程序中没有很多viewcontrollers(据我所见),没有太多机会使用它们,如果我错了请纠正我;)

答案 1 :(得分:0)

更多的是关于面向对象的编程而不是iOS,我认为,你应该熟悉OO-Design的一些概念(如果你真的很感兴趣),但从我的观点来看,你不必这么做。首先回答你的问题:

  

我认为将几乎所有代码都放在一个类中是不好的设计?

有人这么说......

  

我是否正确组织课程?

很难说,你提供的信息。

  

我是否使用协议和委托将我的课程链接在一起?

不一定。

但是:如果您的代码运行正常,那么您是唯一一个正在使用它的代码,您不打算将代码重新用作库或从中获取完整的代码(即如果你只打算复制和粘贴),就没有必要为了做到这一点而重构所有内容。

即使:如果您想继续前进,或者如果您打算编写图书馆或其他东西,那么了解OO(有时甚至是娱乐性的)也是个好主意。由于你正在使用objective-c this one from apple's docs,这可能是一个良好的学习开端。

:如果您阅读了一些关于OO编程的内容,并且(更重要的是)花时间阅读其他人的代码,您就会知道如何以及何时有用地组织自己的码。