在iOS中,打印nil内存地址以显示0x0意味着没有存储空间?
我想知道在iOS中,打印nil内存地址以显示0x0意味着没有存储空间?,ios,objective-c,Ios,Objective C,我想知道nil和[NSNull-null]之间的区别,所以我使用NSLog(@“nil=======%p”,nil)和NSLog(@“null======%p”,“NSNull-null])来打印它们的内存地址,但打印的结果是nil======0x0,null==0x1022c2f08,我不太明白0x0的意思,有人能帮我理解吗?无 Objective-C对象的文本空值。它表示指向0x0的Objective-C对象指针。所有Objective-C指针都以nil开头 NSNull 用于表示空对象的单
nil
和[NSNull-null]
之间的区别,所以我使用NSLog(@“nil=======%p”,nil)和NSLog(@“null======%p”,“NSNull-null])
来打印它们的内存地址,但打印的结果是nil======0x0,null==0x1022c2f08
,我不太明白0x0
的意思,有人能帮我理解吗?无
Objective-C对象的文本空值。它表示指向0x0的Objective-C对象指针。所有Objective-C指针都以nil开头
NSNull
用于表示空对象的单例对象。它是空对象的包装器,因此您可以将其放入像NSArray/NSDictionary这样的集合中
NSArray * a1 = @[[NSNull null]]; //Good
NSArray * a2 = @[nil]; // Crash
零
Objective-C对象的文本空值。它表示指向0x0的Objective-C对象指针。所有Objective-C指针都以nil开头
NSNull
用于表示空对象的单例对象。它是空对象的包装器,因此您可以将其放入像NSArray/NSDictionary这样的集合中
NSArray * a1 = @[[NSNull null]]; //Good
NSArray * a2 = @[nil]; // Crash
0x0
是十进制值的十六进制语法0
是否占用内存空间?是否可能重复取决于此。它是objective C中的一个关键字,与指针的类型相同。如果将nil
值存储在某个位置,那么肯定会占用存储空间。如果您在程序中使用它,从技术上讲,这会占用内存程序段中的存储空间。但是根据你对记忆的理解,我倾向于说答案是“不”。如果这是你的意思的话,它肯定不是一个可以实例化的对象。。表示指针不指向任何内容或地址0x0。。0.. 然而[NSNull null]
是一个用于在字典中表示nil/null的对象,因为iOS中的字典无法存储“nil”值。。IE:在解析JSON时,iOS在字典中存储“NSNull”以表示nil。将“NSNull”视为原语“nil”的装箱版本“NSNull-用于表示集合对象中不允许为空值的空值的单例对象。”-Apple
0x0
是十进制值的十六进制语法0
是否占用内存空间?是否可能重复取决于此。它是objective C中的一个关键字,与指针的类型相同。如果将nil
值存储在某个位置,那么肯定会占用存储空间。如果您在程序中使用它,从技术上讲,这会占用内存程序段中的存储空间。但是根据你对记忆的理解,我倾向于说答案是“不”。如果这是你的意思的话,它肯定不是一个可以实例化的对象。。表示指针不指向任何内容或地址0x0。。0.. 然而[NSNull null]
是一个用于在字典中表示nil/null的对象,因为iOS中的字典无法存储“nil”值。。IE:在解析JSON时,iOS在字典中存储“NSNull”以表示nil。将“NSNull”视为原语“nil”的装箱版本“NSNull-一个用于表示集合对象中不允许为零值的空值的单例对象。”-Apple
嗯,链接内容非常详细,现在让我明白了,谢谢。嗯,链接内容非常详细,现在让我明白了,谢谢。