gpt4 book ai didi

objective-c - 转换为 BOOL 和发送消息 boolValue 之间有什么区别?

转载 作者:太空狗 更新时间:2023-10-30 03:40:18 26 4
gpt4 key购买 nike

这两种我认为做同样事情的方法有什么区别(转换为 BOOL):

BOOL boolOne = (BOOL) [dictionary objectForKey:@"boolValue"];
BOOL boolTwo = [[dictionary objectForKey:@"boolValue"] boolValue];

什么时候应该在另一个之上使用?

最佳答案

它们完全不同。

首先从字典中获取对象指针,然后将指针 解释为BOOL。这意味着任何非 nil 指针都将被解释为 YES,而 nil 将被解释为 NO。在具体示例中,由于字典不能包含 nil 指针,因此您只会从这行代码中得到 YES

第二个从字典中获取相同的对象,然后将消息 boolValue 发送到该对象。据推测,如果对象识别消息,则将生成对象的 BOOL 版本。

作为一个具体的例子,如果字典包含一个NSNumber与键@"boolValue"相关联,NSNumber将接收消息boolValue,如果非零则返回YES,否则返回NO

所以要回答你的问题,你应该使用第二种形式。将指针转换为 BOOL 几乎没有任何意义。

关于objective-c - 转换为 BOOL 和发送消息 boolValue 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8358028/

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