Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-C中的布尔评价_Objective C_Cocoa_Boolean Logic - Fatal编程技术网

Objective-C中的布尔评价

Objective-C中的布尔评价,objective-c,cocoa,boolean-logic,Objective C,Cocoa,Boolean Logic,对不起,如果有人问我这样的问题,我想我懂布尔语,这让我感到困惑。在命令行obj-c程序中,BigNerdRanch的书中说,main函数返回0,这在布尔值中表示为false,这是一件好事,因为如果它返回true或1,则表示发生了错误 所以这本书后面的代码让我感到困惑 -(BOOL)readFromData (NSData *)data ofType:(NSString *)typeName error(NSError **)outError todoItems = [NSPropertyLi

对不起,如果有人问我这样的问题,我想我懂布尔语,这让我感到困惑。在命令行obj-c程序中,BigNerdRanch的书中说,main函数返回0,这在布尔值中表示为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值,这意味着存在错误?我对此感到非常困惑。

返回(todoItems!=nil)基本上意味着如果
todoItems
nil
,则表达式的计算结果为
返回falsetodoItems
不是
nil
,则
返回true

把它看作一个紧凑的if语句


编辑:很抱歉我误解了你的问题。但我实际上认为,这本书的作者正试图给你一个例子,说明如何使用返回值来指示错误。当出现错误时,loadfunction可能返回
nil
,因此,程序将退出
return true
,这是一个错误。

请不要混淆返回BOOL的方法的语义与返回
int
main
函数的语义

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

当您编写一个返回
BOOL
的方法时,您没有处理错误代码。要么是
要么是
<代码>否
通常表示失败,而
表示成功

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

阅读
BOOL
值的用法,就像阅读句子一样

if ([someClass readFromData...]) {
}
读这个就像它看起来一样。成功值
YES
意味着它工作了,读取代码是有意义的。

返回零的main()函数确实按照惯例意味着程序已干净地退出。如果有错误,您将从main()返回非零值。这些错误值可能具有特定于程序的含义,也可能是标准POSIX错误值

对于返回BOOL值的其他函数,由实现者指示YES表示成功还是失败(或者相反表示否)。在本例中-readFromData:ofType:error:如果存在非nil数据集,则返回YES。我没有这本书,但我想这意味着“是”意味着成功,而“否”意味着失败

换句话说,main()返回值的约定不一定与返回BOOL的函数返回值的约定相关,因为后者没有约定