gpt4 book ai didi

objective-c - 为什么 nilObject isEqual nilObject 返回 no?

转载 作者:行者123 更新时间:2023-12-04 03:07:07 24 4
gpt4 key购买 nike

当我使用这段代码时:

    NSString *a = nil;
NSString *b = nil;
if([a isEqual:b]){
NSLog(@"YES");
}
else{
NSLog(@"NO");
}

控制台打印“NO” 我不明白这种行为。你能给我解释一下吗?

最佳答案

nil发送消息的规则如下:

(来源:https://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/Chapters/ocObjectsClasses.html#//apple_ref/doc/uid/TP30001163-CH11-SW7)

  • 如果该方法返回任何指针类型、任何大小小于或等于 sizeof(void*) 的整数标量、floatdoublelong doublelong long,然后发送到 nil 的消息返回 0
  • 如果该方法返回一个 struct,由 Mac OS X ABI Function Call Guide 定义在寄存器中返回,然后发送到 nil 的消息为 struct 中的每个字段返回 0.0。其他 struct 数据类型不会用零填充。
  • 如果该方法返回上述值类型以外的任何值,则发送到 nil 的消息的返回值是未定义的。

(感谢@Jim)

例如,如果您这样做:

if(![nil someMessageThatAlwaysReturnsTrue]) {
NSLog(@"Watch this.");
}

每次都会打印出“Watch this”。

关于objective-c - 为什么 nilObject isEqual nilObject 返回 no?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9602157/

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