野指针与空指针

1.空指针

没有存储任何内存地址的指针就是空指针(null指针)

空指针就是被赋值为nil的指针,在没有被初始化之前为nil

2.野指针

野指针不是”nil”指针,是指向”垃圾内存"的指针(不可用内存)

野指针在程序运行时很危险

3.当野指针访问已经释放的对象时程序会崩溃

举例:

1)Person *p= [Person alloc]init];//创建person对象

2)[p setValue:10 forKey:@”age”];//给对象中age属性赋值

3)[p release];//给对象发送消息,释放对象

4)[p setValue : “child” forKey:@“name”];//程序崩溃

原因:3)后Person的对象内存已经被释放,但此时p仍然保存之前的地址,此时继续访问对象内存会导致程序崩溃.

解决办法:

1)Person *p= [Person alloc]init];//创建person对象

2)[p setValue:10 forKey:@”age”];//给对象中age属性赋值

3)[p release];//给对象发送消息,释放对象

4)p = nil;//此时p变成了空指针 不指向任何内存

4)[p setValue : “child” forKey:@“name”];//此时相当于给nil发送消息程序不会报错 输出p.name = 0 但java,c/c++中程序也会报错

4.由此也可以得出:在Objective-C中向nil发送消息是完全有效的——只是在运行时不会有任何作用.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 随身带上mac与源码进行学习与介绍 参考:http://www.infocool.net/kb/IOS/20160...
    桃逸阅读 3,229评论 0 3
  • 接《iOS知识点大总结一》 三十四、主线程操作UI(对UI进行更新只能在主线程进行) 解释:所谓的在主线程更新UI...
    RunningMan_Fly阅读 5,342评论 0 0
  • 前言 内存管理是程序设计中很重要的一部分,程序在运行的过程中分配内存,运行结束后释放占用的内存。 如果程序运行时一...
    浩杰ee阅读 1,684评论 0 4
  • 难受死我了
    北京东路2006阅读 1,351评论 0 0
  • 认真计划好的西安之行又泡汤了,这已经是两年来的第三次了。 之前明明很有希望的工作也突然通知说了不确定的话,我已经从...
    喵一个阅读 3,146评论 0 0

友情链接更多精彩内容