区别 1. nil:对象为空 定义某一实例对象为空值。例如: 2. Nil...">
美文网首页iOS点滴汇聚
Objective-C中nil, Nil, NULL和NSNul

Objective-C中nil, Nil, NULL和NSNul

作者: KrisBento | 来源:发表于2016-05-23 09:59 被阅读0次

    <a name="Chart">区别</a>

    Symbol Value Meaning
    NULL (void *)0 literal null value for C pointers
    nil (id)0 literal null value for Objective-C objects
    Nil (Class)0 literal null value for Objective-C classes
    NSNull [NSNull null] singleton object used to represent null

    1. nil:对象为空

    定义某一实例对象为空值。例如:

    NSObject* obj = nil;  
    if (nil == obj) {  
        NSLog(@"obj is nil");  
    }  
    else {  
        NSLog(@"obj is not nil");  
    }
    

    2. Nil:类为空

    定义某一为空。例如:

    Class someClass = Nil;  
    Class anotherClass = [NSString class];
    

    3. NULL:基本数据对象指针为空

    NULL是无类型的,只是一个宏,它代表为空。用于c语言的各种数据类型的指针为空。例如:

    intint *pointerToInt = NULL;   
    charchar *pointerToChar = NULL;   
    struct TreeNode *rootNode = NULL;
    

    4. NSNull

    集合对象无法包含 nil 作为其具体值,如NSArray、NSSet和NSDictionary。相应地,nil值用一个特定的对象 NSNull 来表示。NSNull 提供了一个单一实例用于表示集合对象属性中的的nil值。

    @interface NSNull : NSObject <NSCopying, NSSecureCoding>  
    + (NSNull *)null;
    @end
    

    在NSNull单例类中,提供了唯一的方法null:Returns the singleton instance of NSNull.
    例如:

    NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionary];  
    mutableDictionary[@"someKey"] = [NSNull null]; // Sets value of NSNull singleton for `someKey`  
    NSLog(@"Keys: %@", [mutableDictionary allKeys]); // @[@"someKey"]
    

    相关文章

      网友评论

        本文标题:Objective-C中nil, Nil, NULL和NSNul

        本文链接:https://www.haomeiwen.com/subject/cwdarttx.html