Лучше ли использовать операторы if или switch в cellForRowAtIndexPath? - UITableView - PullRequest
2 голосов
/ 23 января 2011

При настройке ячеек в UITableView лучше всего использовать операторы или операторы переключения в качестве общей практики?

Я говорю конкретно о cellForRowAtIndexPath здесь и других методах UITableView, а не как общий вопрос программирования.

Ответы [ 3 ]

7 голосов
/ 24 января 2011

Поскольку я настолько стар, что беспокоюсь о производительности, я бы, вероятно, сделал это следующим образом ............ но подождите : современные компиляторы Проще говоря, «взять на себя» и оптимизировать / скомпилировать, как они хотят.

Так что, на мой взгляд, это действительно и глубоко не имеет значения, по этой причине:

Вы понятия не имеете, что делают современные компиляторы, поэтому бесполезно беспокоиться о том, чтобы написать это так или иначе .

Я предпочитаю «если», а не сложные современные переключатели, исключительно как стилистический вопрос и махать флагом за старомодность.

Вы могли бы сказать: попытайтесь «вернуться» из процедуры как можно раньше на каждом пути, чтобы в конце она не проходила бессмысленно. Я теряю сон из-за таких вещей, это отличный вопрос.

Одна точка .. в программировании на iOS есть огромная ценность в , делающем вещи так же, как другие . Я ненавижу этот факт, но это правда! Так что в конкретном вопросе под рукой, если вы можете просветить идиома Apple - сделайте это таким образом, наверняка.

3 голосов
/ 23 января 2011

Нет никакой разницы.

Вы должны убедиться, что вы пытаетесь повторно использовать «совместимую» ячейку с помощью метода dequeueReusableCellWithIdentifier в предоставленном экземпляре UITableView, но кроме этого вам просто нужно вернуть действительный UITableViewCell - как добраться до этой конечной точки совершенно не имеет значения.

Тем не менее, в качестве небольшого совета я постараюсь сделать все как можно более "легким", чтобы гарантировать, что пользовательский интерфейс остается отзывчивым. (То есть: не пытайтесь опрашивать сложные структуры данных в этом методе - сделайте все это заранее и просто извлеките результаты из соответствующего источника данных в cellForRowAtIndexPath.)

1 голос
/ 24 января 2011

Вероятно, есть десятки веских причин для каждого метода, а также множество других решений.Вот мое мнение по этому поводу:

Если вы установили фиксированное количество элементов (перечисляемых), присвойте им имена с типом enum и используйте операторы switch.Он очень структурированный, легко читаемый, и с некоторыми настройками компилятора вы получите предупреждение, если пропустите регистр.

В случае открытых / неограниченных / не очень хорошо структурированных вариантов используйте если .Иногда из одного и того же блока кода поступает несколько ячеек, иногда используется вспомогательный объект и т. Д.

Как и в любом коде: делайте его простым, читаемым и простым в обслуживании. если или switch здесь не является критичным для производительности решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...