gpt4 book ai didi

objective-c - Objective-C 中的 BOOL 评估

转载 作者:行者123 更新时间:2023-12-03 16:32:13 28 4
gpt4 key购买 nike

很抱歉,如果有人问过类似的问题,但我认为我理解 bool 值,这让我感到困惑。 BigNerdRanch 书上说,在命令行 obj-c 程序中,主函数返回 0,这在 bool 值中意味着 false,这是一件好事,因为如果它返回 true 或 1,则意味着发生了错误。

所以本书后面的这段代码让我感到困惑。

-(BOOL)readFromData (NSData *)data ofType:(NSString *)typeName error(NSError **)outError


todoItems = [NSPropertyListSerialization propertyListWithData: data
options:NSPropertyListMutableContainers
format:NULL
error:outError

return (todoItems != nil);

这段代码基本上不会说,由于 todoItems 将加载数据,因此它的指针不会设置为 nil,因此它将评估 true,这将返回 true 作为方法的 BOOL 值,这意味着存在错误?我对此感到很困惑。

最佳答案

不要将返回 BOOL 的方法的语义与返回 intmain 函数混淆。

在 C 语言中,许多函数都会返回一个 int 值来指示成功或失败。 0 通常表示成功,而非零(不仅仅是 1)则表示某种错误代码。该代码可以是任何非零数字。这只是 70 年代以来一直使用的惯例。

当您编写返回 BOOL 的方法时,您并不是在处理错误代码。要么是,要么是NO 通常表示失败,而 YES 表示成功。

NO实际上是0这一事实与使用0表示的旧标准C约定毫无关系成功。不要混淆它们的含义。

像阅读句子一样阅读 BOOL 值的使用。

if ([someClass readFromData...]) {
}

像它看起来的那样阅读此内容。成功值为 YES 意味着它有效并且阅读代码是有意义的。

关于objective-c - Objective-C 中的 BOOL 评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18007755/

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