gpt4 book ai didi

ios - 可以使用 nil 作为 BOOL 来表示 NO 吗?

转载 作者:行者123 更新时间:2023-12-01 17:38:34 25 4
gpt4 key购买 nike

我想取消选择 UITableView 中发生突出显示的每个可见单元格。我尝试了这行代码,我很惊讶它确实有效。

[[self.tableView visibleCells]makeObjectsPerformSelector:@selector(setHighlighted:)withObject:nil];

所以我尝试了相反的方法,以突出显示每个单元格:
[[self.tableView visibleCells]makeObjectsPerformSelector:@selector(setHighlighted:)withObject:[NSObject new]];

它的工作原理!像这样编码可以吗?使用对象或 nil 代替 boolean 值 YES 或 NO?还是会引起任何问题?

最佳答案

[...] I was amazed that it actually works.



这有效的事实是巧合。它高度依赖于架构的调用约定和对象的实际地址。

例如,如果 [NSObject new]将返回一个与 256 字节对齐的地址(尾随十六进制数字 00)的对象,它可能被解释为 NO .

Is it OK to code like this?



当然不。正如我所说,它很脆弱,可能会混淆其他追随你的开发人员。

以下是 C 标准的摘录(关于使用与声明不匹配的参数类型调用函数):

6.5.2.2 Function calls

[...]

9) If the function is defined with a type that is not compatible with the type (of the expression) pointed to by the expression that denotes the called function, the behavior is undefined.

关于ios - 可以使用 nil 作为 BOOL 来表示 NO 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31111015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com