在Google搜索here的答案时,我看到以下代码行another question of mine。
cell.accessoryType = (UITableViewCellAccessoryNone + UITableViewCellAccessoryCheckmark) - cell.accessoryType;
从该线程看,代码可以正常工作。我只是想知道,那个代码不是多余的吗?如果您知道accessoryType
,为什么要从该表达式中减去它?
答案 0 :(得分:4)
如果accessoryType是UITableViewCellAccessoryNone,那么表达式的网络将把它设置为UITableViewCellAccessoryCheckmark。
如果accessoryType是UITableViewCellAccessoryCheckmark,则表达式的网络将其设置为UITableViewCellAccessoryNone。
这只是说
的捷径if (cell.accessoryType == UITableViewCellAccessoryNone)
cell.accessoryType = UITableViewCellAccessoryCheckmark
else if (cell.accessoryType == UITableViewCellAccessoryCheckmark)
cell.accessoryType = UITableViewCellAccessoryNone
绝对是混淆代码的一个例子......我会避免它。
答案 1 :(得分:1)
鉴于此代码在UITableViewCellAccessoryCheckmark
和UITableViewCellAccessoryNone
之间切换并且试图简洁,另一种替代方案 - 我发现更清楚 - 将是:
cell.accessoryType ^= UITableViewCellAccessoryCheckmark|UITableViewCellAccessoryNone;
这个陈述的意图更清楚,并且不需要条件语句 - 根据调用的频率,这可能会有用也可能没用。