是否最好在cellForRowAtIndexPath中使用if语句或switch语句? - UITableView

时间:2011-01-23 18:00:33

标签: iphone objective-c ios4 uitableview

在UITableView中设置单元格时,最好使用if语句或switch语句作为一般做法吗?

我在这里专门谈论cellForRowAtIndexPath和其他UITableView方法,而不是一般的编程问题。

3 个答案:

答案 0 :(得分:7)

因为我太老了以至于担心表现,我可能会这样做............ 但等待 :现代编译器,非常简单,“接管”并优化/编译他们想要的方式。

所以在我看来,由于这个原因,它真正而且深刻地没有区别:

你不知道现代编译器在做什么,所以用一种方式或另一种方式编写它是毫无意义的

我倾向于选择“如果”而不是复杂的现代开关,纯粹作为一种风格问题,并挥舞着过时的旗帜。

你可能会说:尽量在每条路径上尽可能早地从例行程序中“返回”,这样它最终就不会毫无意义地遍历。我在这样的事情上失眠,这是一个很好的问题。

一点 ..在iOS编程中,以与其他人相同的方式做事具有巨大的价值。我讨厌这个事实,但是,这是真的!所以在手头的具体问题中,如果你能够发现一个Apple成语 - 那就这样做吧。

答案 1 :(得分:3)

它没有任何区别。

您应该确保通过提供的UITableView实例上的dequeueReusableCellWithIdentifier方法尝试重用“兼容”单元格,但除此之外,您只需要返回一个有效的UITableViewCell - 您如何达到这一目的 - 这一点完全无关紧要。

那就是说,作为一些建议,我会尝试尽可能保持“轻松”,以确保用户界面保持响应。 (即:不要尝试在此方法中查询复杂的数据结构 - 事先做好所有操作,只需从cellForRowAtIndexPath中的相关数据源中获取结果。)

答案 2 :(得分:1)

每种方法可能有很多很好的理由,还有很多其他解决方案。以下是我对此的看法:

如果设置了固定数量的元素(枚举),请使用枚举类型命名它们并使用switch语句。它非常结构化,易于阅读,如果你错过了一些编译器设置,你会收到警告。

如果是开放/无限制/不太结构化的选择,请使用 if 。有时,多个单元格来自相同的代码块,有时使用辅助对象等等。

与每个代码一样:保持简单,易读和易于维护。 如果开关不是此处的性能关键决定。