nil / Nil / NULL / NSNull的區(qū)別

1.nil: 指向一個(gè)對(duì)象的空指針, 對(duì)Objective-C中id對(duì)象付空值.
2.Nil:指向一個(gè)類的空指針, a null pointer to a Objective-C class.表示對(duì)類進(jìn)行付空值.
3.NULL:指向其它類型的空指針(如:C類性,基本類型)A null pointer to anything else, is for C-style memory pointers.
4.NSNull:Objective-C中的一個(gè)類,包含 + (NSNull *)null;單例方法,多用于集合中值為空的對(duì)象。
For example:
NSString *string = [NSString stringWithFormat:@"Test"]; string = nil;

NSURL *url = nil;

NSArray * array = [NSArray arrayWithObjects:@"test",@"test1" ,nil];
[array release];

if (array)
{

//僅僅對(duì)數(shù)組release,并沒有賦空值的話,在程序某個(gè)地方如果繼續(xù)對(duì)數(shù)組操縱,程序直接崩潰
NSString * string = [array objectAtIndex:0];
NSLog(@"%@",string);
}

Class class = Nil;
int *pointer = NULL;
NSArray *array = [NSArray arrayWithObjects:[[NSObject alloc] init], [NSNull null], [[NSObject alloc] init], [NSNull null], nil];

NSArray 和 NSDictionary 都是以nil結(jié)尾;

NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
[dictionary setObject:nil forKey:@"Key-nil"]; 會(huì)crash
[dictionary setObject:[NSNull null] forKey:@"Key-nil"];不會(huì)引起crash
[dictionary setObject:(value == nil ? [NSNull null] : value) forKey:@"key"];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容