精华内容
下载资源
问答
  • 主要介绍了iOS中nilNil、NULL、NSNull详解的相关资料,需要的朋友可以参考下
  • gem 'nil_or' 然后执行: $ bundle 或者自己安装: $ gem install nil_or 用法 我什么时候需要它? 而不是写: date_of_birth = params [ :date_of_birth ] ? params [ :date_of_birth ] . to_date : nil ...
  • to_nil:to_nil 宝石-源码

    2021-06-14 08:40:58
    to_nil # nil 31337 . to_nil # nil "Yet another shitty gem" . to_nil # nil "Your fat boss" . to_nil # nil nil . to_nil # nil 贡献 奥利?! 分叉它( ) 创建您的功能分支( git checkout -b my-new-...
  • 相信有不少朋友想知道,在 Objective-C 中 nilNil 以及 NULL 的区别。最重要的是,在面试中还有不少朋友常会被问到。现在小编在这里统一详细说明。
  • oc——nil Nil NULL NSNull

    2017-04-01 10:15:55
    nil&Nil&NULL - (void)nil_Nil_NULL { ... NSLog(@"equal(nil, Nil) = %d, equal(nil, NULL) = %d, equal(Nil, NULL) = %d", nil == Nil, nil == NULL, Nil == NULL); int *pi; pi = nil; pi

    nil&Nil&NULL

    - (void)nil_Nil_NULL
    {
        NSLog(@"nil = %p, Nil = %p, Null = %p", nil, Nil, NULL);
        NSLog(@"equal(nil, Nil) = %d, equal(nil, NULL) = %d, equal(Nil, NULL) = %d", nil == Nil, nil == NULL, Nil == NULL);
        
        int *pi;
        pi = nil;
        pi = Nil;
        pi = NULL;
        
        NSObject *obj;
        obj = nil;
        obj = Nil;
        obj = NULL;
        
        Class cls;
        cls = nil;
        cls = Nil;
        cls = NULL;
    }
    output:
    nil = 0x0, Nil = 0x0, Null = 0x0
    equal(nil, Nil) = 1, equal(nil, NULL) = 1, equal(Nil, NULL) = 1
    总结:
    • nil,Nil,NULL都是指针类型常量0,表示指针为空,不指向任何对象,可交互使用,语法上无问题
    • nil,Nil,NULL语义上不同,可理解为nil为(id)0,Nil为(Class)0,NULL为(void *)0
    • 为增强代码可读性,instance object指针使用nil,class object指针使用Nil,c类型指针使用NULL

    空对象

    @interface FBAnimal : NSObject
    {
    @public
        int _food;
    }
    
    @end
    
    @implementation FBAnimal
    
    - (void)info
    {
        NSLog(@"food = %d", _food);
    }
    
    @end
    - (void)empty_obj
    {
        NSLog(@"instance object not nil");
        FBAnimal *animal1 = [[FBAnimal alloc] init];
        animal1->_food = 5;
        [animal1 info];
        
        NSLog(@"instance object nil");
        FBAnimal *animal2 = nil;
        //animal2->_food = 8;
        [animal2 info];
        
        NSLog(@"class object not Nil");
        Class cls1 = [FBAnimal class];
        FBAnimal *animal3 = [[cls1 alloc] init];
        animal3->_food = 15;
        [animal3 info];
        
        NSLog(@"class object Nil");
        Class cls2 = Nil;
        FBAnimal *animal4 = [[cls2 alloc] init];
        //animal4->_food = 18;
        [animal4 info];
    }
    output:
    instance object not nil
    food = 5
    instance object nil
    class object not Nil
    food = 15
    class object Nil
    总结:
    • 调用方法成员本质是转换为objc_msgSend系列函数,而objc_msgSend系列函数内置了空对象判断机制,因此空对象调用方法成员不会crash,因此可omit对象为空判断,节省代码,提高执行效率
    • 访问数据成员本质是通过offset直接访问内存空间,没有任何判断对象为空机制,因此空对象访问数据成员必然crash
    注:c++中实例对象不管是调用方法成员或访问数据成员都没有任何判断对象为空机制,因此空对象不管调用方法成员或访问数据成员都必然crash

    NSNull

    NSNull是类,单例实现,空对象(非nil或Nil),常用在容器中表示容器元素为空,容器元素不允许空对象(nil或Nil),空对象(nil或Nil)在容器中作为容器结束标记符,起哨兵作用
    - (void)use_NSNull
    {
        NSString *animal = nil;
        
        NSArray *animals1 = [NSArray arrayWithObjects:@"dog", [NSNull null], @"cat", nil];
        NSArray *animals2 = [NSArray arrayWithObjects:@"dog", nil, @"cat", animal, nil];
        NSArray *animals3 = [NSArray arrayWithObjects:@"dog", animal, @"cat", nil];
        
        NSLog(@"animals1 count = %ld", animals1.count);
        NSLog(@"animals2 count = %ld", animals2.count);
        NSLog(@"animals3 count = %ld", animals3.count);
    }
    output:
    animals1 count = 3
    animals2 count = 1
    animals3 count = 1
    注:容器添加元素时,运行时判断,一旦遇到空对象(nil或Nil),容器添加元素结束,ignore之后元素
    展开全文
  • nilNil的区别

    2016-07-05 16:49:57
    1、nil  nil一般是指把一个对象置空,既完全是一个空对象,完全从内存中释放。  2、Nil  Nilnil基本没有任何区别,也可以说只要是可以使用nil的地方都可以使用Nil,反之亦然。但是作为程序猿,我们...

    1、nil

      nil一般是指把一个对象置空,既完全是一个空对象,完全从内存中释放。  

    2、Nil

      Nil和nil基本没有任何区别,也可以说只要是可以使用nil的地方都可以使用Nil,反之亦然。但是作为程序猿,我们应该更加严谨一些。nil和Nil的区别在于,nil表示置空一个对象,二Nil表示置空一个类。

    展开全文
  • nil Nil NULL NSNull

    2013-10-17 18:39:35
    nil Nil NULL NSNull nil: A null pointer to an Objective-C object. ( #define nil ((id)0) ) Nil: A null pointer to an Objective-C class. NULL: A null pointer to anything else, is for C-st

    nil Nil NULL NSNull


    nil: A null pointer to an Objective-C object.
    ( #define nil ((id)0)  )

    Nil: A null pointer to an Objective-C class.

    NULL: A null pointer to anything else,  is for C-style memory pointers.
    ( #define NULL ((void *)0)  )

    NSNull: A class defines a singleton object used to represent null values in collection objects (which don't allow nil values).

    [NSNull null]: The singleton instance of NSNull.


    针对与NSNull的小测试:(发现一个之前碰到的小问题,就是<null>,之前在数据解析完之后打印的默认空值符号)
         NSObject * obj1 = nil ;
        NSObject * obj2 = [[NSObjectalloc]init];
        NSObject * obj3 = [NSNullnull];
        NSObject * obj4 = [NSObjectnew];
        NSArray * array = [NSArrayarrayWithObjects:obj2,obj3,obj4,obj1, nil];
        NSLog(@"%d",[array count]);
        NSLog(@"%@",array);
        int i = 0;
        for(NSObject * obj in array)
        {
            if([obj isEqual:[NSNullnull]])
            {
                NSLog(@"obj[%d]是<null>",i);
            }
            i++;
        }
        
        // 打印信息
        /*
         2013-08-23 10:23:24.603 TestPro[1018:c07] 3
         2013-08-23 10:23:24.604 TestPro[1018:c07] (
         "<NSObject: 0x7566b10>",
         "<null>",
         "<NSObject: 0x75831f0>"
         )
         2013-08-23 10:23:24.604 TestPro[1018:c07] obj[1]是<null>
         */
    针对之前碰到的问题可以做这样的判断:
      if([obj isEqual:[NSNullnull]])
       {
               
       }
    展开全文
  • 从对象和数组中删除nil值。 将所有其他nil值转换为null。 例子 var noNil = require ( 'no-nil' ) ; var input = [ 1 , undefined ] ; console . log ( noNil ( input ) ) ; // [1]; ##执照 The MIT License ...
  • nil Nil NULL NSNull 之间的区别

    千次阅读 2014-11-19 10:51:43
    nil 是对objective c id 对象赋空值 例如  NSString * string = [NSString stringWithFormat:@"test"]; string = nil;  对于objective c 集合类对象 比如数组对象,字典对象,当我们不需要再使用他们的...
    nil 是对objective c id 对象赋空值
    
    例如:
    NSString * string = [NSString stringWithFormat:@"test"];
        string = nil;

     对于objective c 集合类对象 比如数组对象,字典对象,当我们不需要再使用他们的时候,对他们release 的同时最好也把他们赋值为nil,这样确保安全性,下面一个简单的一个例子:如果不赋值nil,可能导致程序崩溃
    NSArray * array = [NSArray arrayWithObjects:@"test",@"test1" ,nil];
        [array release];
        
        if (array)
        {
        //仅仅对数组release,并没有赋空值的话,在程序某个地方如果继续对数组操纵,程序直接崩溃
            NSString * string = [array objectAtIndex:0];
            NSLog(@"%@",string);
        }

    编程的时候对集合类对象先赋值为nil,再将其release这样可以保证程序安全性,苹果官方例子中也看到过在viewDidUnload把对象赋值nil,然后在
    dealloc方法中将他们release,

    Nil: A null pointer to an Objective-C class.表示对类进行赋空值

    NULL: A null pointer to anything else,  is for C-style memory pointers. 用于对非对象指针赋空值,比如C指针

    NSNull 对于像NSArray这样的类型,nil或NULL不能做为加到其中的Object,如果定义了一个NSArray,为其分配了内存,又想设置其中的内容为空,则可以用[NSNULL null】返回的对象来初始化NSArray中的内容
    展开全文
  • nil Nil NULL NSNul

    千次阅读 2012-04-20 10:29:17
    出处:... nil: A null pointer to an Objective-C object. ( #define nil ((id)0) ) nil 是一个对象值。   Nil: A null pointer to an Objective-C cl
  • nilNil,NULL和NSNull

    2015-12-30 18:15:20
    一、nilnil是Objective-C的字面空值,对应id类型的对象; 定义一个实例为空,指向oc中对象的空指针; 我们给对象赋值时一般会使用object = nil,表示我想把这个对象释放掉; 判断: if (object == nil) { } if ...
  • Golang之nil

    千次阅读 2019-02-11 20:53:35
    Golang之nil golang中的**nil,很多人都误以为与Java、PHP等编程语言中的null一样。但是实际上Golang的niu复杂得多了,如果不信,那我们继续往下阅读。 nil 为预声明的标示符,定义在builtin/builtin.go** // nil is...
  • 在 Go 语言中,布尔类型的零值(初始值)为 false ,数值类型的零值为 0,字符串类型的零值为空字符串 "",而指针、切片、映射、通道、函数和接口的零值则是 nilnil 是 Go 语言中一个预定义好的标识符,有过其他...
  • NSNULL nil NULL Nil

    2012-03-29 14:42:07
    NSNULL,NULL和nil在本质上应该是一样的,NULL和nil其实就是0,但是在Objective-c中,对于像NSArray这样的类型,nil或NULL不能做为加到其中的Object,如果定义了一个NSArray,为其分配了内存,又想设置其中的内容为...
  • null nil Nil 的区别

    2013-10-16 11:26:46
    1、nil和null从字面意思来理解比较简单,nil是一个对象,而NULL是一个值,我的理解为nil是将对象设置为空,而null是将基本类型设置为空的,个人感觉有点像属性当中,基本类型分配为assign NSString类型一般分配copy...
  • nilNil、NULL和NSNull区别:http://www.henishuo.com/nil-nil-null-nsnull-difference/为了更好地维护,这里只放链接,这样就可以一处更新,其它地方进来都可以看到最新的内容!
  • Nilnil的区别

    千次阅读 2013-09-10 20:36:20
    根据文档 Nil 用来为 Class 类型的对象附值, 而 nil 用来为类的实例对象附值。 由于 Oc 是在 c 的基础上通过 runtime 技术来实现各种面向对象特性,对于 Oc 来说,Class 也是一个特殊的对象,是对象就会有值,就会...
  • nilNil、NULL、NSNull的区别nil:解释:nil 是 ObjC 对象的字面空值,对应 id 类型的对象,或者使用 @interface 声明的 ObjC 对象。(指向一个对象的空指针) 举例:NSURL *url = nil;NilNil 是 ObjC 类类型的...
  • iOS中nilNil、NULL、NSNull 区别 编码的时候会时不时的遇到 nilNil、NULL、NSNull 中某一个,傻傻的分不清用法,现在我们来看看他们之间的区别 1.nil ---- nil 是 ObjC 对象的字面空值,对应 id 类型的对象,...
  • Go文档中说明:nil是预定义的标识符,代表指针,通道,函数,接口,映射或者切片的零值,并不是Go的关键字之一。 还有,nil只能赋值为以上的几个类型,若赋值给基础类型,则会引发panic 2.nil的作用 指针(pointer)...
  • 在日常开发中,经常会遇到需要清空数组的情况,很多人下意识的会想到nil这个方法,这里是不提倡的。因为如果使用 Array = nil;这样不仅清空了数组,同时也把memory释放了,这个object就不存在了。 在清空数组时,...
  • golang中的nil

    万次阅读 2020-10-01 21:35:31
    golang中的nil与其他语言中的语义是一样的,就是代表引用类型的默认值,但是不一样的是, golang中有多种引用类型:pointer、interface、slice、map,channel,function;因此,每种引用类型的默认值,是不一样的,...
  • nil定义为实例对象的空值(a null instance)Nil定义为类对象的空值(a null class)Swift 1.2 目前只有nil而没有Nil。任何类型的可选值都可以被设置为nil,不只是对象(object)类型。 NSNull @interface NSNull : ...
  • nilNil、NULL、NSNull之间的区别nil的含义指向一个对象的指针为空,用于给对象指针赋值为空,防止野指针的产生;也称nil为空对象:表示一个已经被释放了的对象,和值为空的对象(NSNull)不同。NSNull是一个对象,...
  • 在golang中,nil只能赋值给指针、channel、func、interface、map或slice类型的变量。如果未遵循这个规则,则会引发panic。
  • 1、nil: 指向一个对象的指针为空,例如: NSString *name = nil; 2、Nil :指向一个类的指针为空,例如: Class aClass = Nil; 3、NULL:指向C类型的指针为空,例如: int *pInt = NULL; char *chChar = NULL; 4、...
  • nilNil、NULL和NSNull的理解

    千次阅读 2017-12-25 14:08:40
    nil对象发送消息,是不会崩溃的,但是要么返回默认的0,要么返回nil对象。至于id类型的为什么返回0x0,而不是返回nil,我也是有些疑问的,nil和0x0的具体区别还有待研究。 而如果给nunull对象发送消息,则会引起...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 479,770
精华内容 191,908
关键字:

nil