美文网首页
nil Nil NULL NSNull kCFNull的区别

nil Nil NULL NSNull kCFNull的区别

作者: FongG | 来源:发表于2018-04-03 15:00 被阅读0次
    标志 含义
    NULL C指针的字面零值 (void *)0
    nil Objective-C对象的字面零值 (id)0
    Nil Objective-C类的字面零值 (Class)0
    NSNull 用来表示零值的单独的对象,可以作为数组的占位符 NSNull
    kCFNull NSNull的单例 kCFNull

    字面零值的解释

    //数据输出应该是Nil
        Class class = class_getSuperclass(Nil);
    
        if (class == nil) {
            NSLog(@"class:nil");
        }
        if (class == Nil) {
            NSLog(@"class:Nil");
        }
        if (class == NULL) {
            NSLog(@"class:NULL");
        }
        if (class == [NSNull class]) {
            NSLog(@"class:NULL");
        }
    
    //打印结果
    2017-09-19 11:17:31.536 xctest[3144:977580] class:nil
    2017-09-19 11:17:31.537 xctest[3144:977580] class:Nil
    2017-09-19 11:17:31.540 xctest[3144:977580] class:NULL
    
    说明比较大小中nil、Nil、NULL的值都相等(字面零值)
    

    id 和 void * 的区别

    id本身就是一个指针,而且可以指向任何一个继承了Object(或者NSObject)类的对象。
    所以需要注意的是:id是一个指针,所以你在使用id的时候不需要加星号。
    
    比如id foo=nil定义了一个nil指针,这个指针指向NSObject的一个任意子类。
    而id *foo=nil则定义了一个指针,这个指针指向另一个指针,被指向的这个指针指向NSObject的一个子类。
    

    相关文章

      网友评论

          本文标题:nil Nil NULL NSNull kCFNull的区别

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