空指针和野指针 && 识别剪切板上的内容
1.什么是空指针?
没有存储任何内存地址的指针就称为空指针(NULL指针), 空指针就是被赋值为0的指针,在没有被具体初始化之前,其值为0
列举2个空指针: Person *p1 = NULL Person *p2 = nil
2.什么是野指针?
野指针是指向垃圾内存的指针,或者说 是指向不可用内存的指针。要注意:野指针不是空指针 而且野指针是比较蛋疼的(危险)。
什么叫指向不可用内存的指针,给大家打个比喻:
Person *p = [[Person alloc] init];
[p setName : @"a"];
[p release];
[p setName : @"b"];
在这里,首先p指向了Person对象,比如说Person的内存地址是0xff43, p中存储了0xff43(Person对象),所以说p指向了Person
当p release代码调用之后,p会给Person对象发送release消息,Person对象接受到release消息之后马上被销毁,所占用的内容空间也就会被回收。
这个时候p中的内存地址0xff43 也就变成了 不可用内存(垃圾内存)
这个时候 在去调用 [p setName : @"b"]; 给Person对象发送消息,Person占用的内存已经被回收了,所以肯定会报野指针错误。
Person *p = [[Person alloc] init];
[p setName : @"a"];
[p release];
p = nil;
[p setName : @"b"];
这么改一下就没问题了,将p变为空指针。 也就是说 [nil setName : @"b"];是没错的。
3.识别剪切板上的内容
就一句代码,很简单 (swift)

浙公网安备 33010602011771号