Пожалуйста, объясните этот странный способ установки аксессуаров для сотовых - PullRequest
4 голосов
/ 08 декабря 2010

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

cell.accessoryType = (UITableViewCellAccessoryNone + UITableViewCellAccessoryCheckmark) - cell.accessoryType;

Кажется из этого потока, что код работает. Мне просто интересно, не является ли этот код избыточным? Если вы знаете accessoryType, зачем вычитать его из этого выражения?

Ответы [ 2 ]

4 голосов
/ 08 декабря 2010

Если accessoryType был UITableViewCellAccessoryNone, то сеть выражения установит для него значение UITableViewCellAccessoryCheckmark.

Если accessoryType был UITableViewCellAccessoryCheckmark, тогда сеть выражения будет устанавливать его в UITableCone * только для UITableC видимости UIT.

Это просто ярлык, чтобы сказать

if (cell.accessoryType == UITableViewCellAccessoryNone)
    cell.accessoryType = UITableViewCellAccessoryCheckmark
else if (cell.accessoryType == UITableViewCellAccessoryCheckmark)
    cell.accessoryType = UITableViewCellAccessoryNone

Определенно пример запутанного кода ... Я бы его избежал.

1 голос
/ 08 декабря 2010

Учитывая, что этот код переключается между UITableViewCellAccessoryCheckmark и UITableViewCellAccessoryNone и пытается быть кратким, другой вариант, который я считаю более понятным, будет:

cell.accessoryType ^= UITableViewCellAccessoryCheckmark|UITableViewCellAccessoryNone;

Это утверждение болееясно в своем намерении и устраняет необходимость в условном утверждении - которое может или не может быть полезным в зависимости от того, как часто оно вызывается.

...