tags: OC 30 day
可以作为指针变量的值。如果一个指针变量的值是NULL值,代表这个指针不指向内存中的任何一个空间。
NULL其实等价于0,NULL其实是一个宏,就是0。nil
只能作为指针变量的值。代表这个指针变量不指向内存中的任何空间。nil其实也等价于0,也是一个宏,就是0。
所以,Null和nil是一样的。
这两个都是一样的,那到底要如何使用呢?
虽然使用NULL的地方可以是nil,使用nil的地方可以是NULL,但是不建议大家随便使用。
Null和nil什么时候该用哪个?
C指针用NULL
int *p1 = NULL; p1指针不指向内存中的任何一个空间。
OC的类指针用nil
Person *p1 = nil; p1指针不指向任何对象。
如果一个类指针的值为nil 代表这个指针不指向任何对象。
Person *p1 = nil;
那么这个时候,如果通过p1指针去访问p1指针指向的对象的属性,这时候会运行报错。
那么这个时候,如果通过p1指针去调用对象的方法,运行不会报错,但是方法不会执行,没有任何反应。
如果多个指针指向同一个对象?
同类型的指针变量之间是可以相互赋值的。Person *p1 = [Person new];Person *p2 = p1; 这是完全没有问题的,p1和p2的类型都是Person指针类型的。
代表将p1的值赋值给p2,而p1的值是对象的位址,所以就把对象的地址赋值给了p2。
所以p1和p2指向了同一个对象。
无论透过p1还是p2其实修改的都是同一个对象。
2. 目前为止,只要看见了new,就说明创建了一个新的对象。