引用和指针

来源:互联网 发布:软件开发平均工资 编辑:程序博客网 时间:2024/06/14 14:51

引用:在oc中引用分为弱引用和强引用,

  •   弱引用:弱引用是没有对象的绝对使用权,也没有使对象的计数器进行加1操作,在引用的对象被释放的时候,它是无能为力的,
  •  弱引用关键字__weak 在对象被释放的时候 会自动的把指针置为nil,保证了程序的优良性;__unsafe_unretained:在对象释放的时候,不会把只想对象的弱引用指针置为nil,从而使得指针成为野指针,若再次调用该指针,会使程序发生莫名其妙的变化从而是程序崩溃,故不建议使用;
  • 强引用:强引用拥有对象的绝对使用权,使得对象的指针计数器加1,通常情况下在强引用指针没有对对象进行释放的时候,指针对象是不会被程序销毁的。
  • 强引用的关键字:__strong 用来修饰变量,strong等同retain

指针:内存中的一个变量,其内部存储的是一个变量或对象的地址,同时指针也不关心它所指向的地址的内容如何变化。


指针和引用的区别:

1.从现象上看:指针在运行时可以改变其所指向的值,而引用一旦和对象绑定后就不再改变,引用访问是直接访问,而指针是间接访问。

2.从内存上看:程序为指针变量分配空间,而引用不分配

3.在遍以上:在程序编译过程中,都要被添加到符号表上,指针变量在符号表上记录的是指针变量的地址值,而医用记录的是引用的对象的地址值。符号表一旦生成就不会改变。所以指针可以改变指向的对象(指针变量的值可以改变)而引用不行

0 0
原创粉丝点击