2015年08月19日09:54:45

本文介绍了对象指针的概念及用途,包括局部与全局对象指针的区别,强引用、归零弱引用和弱引用的不同特性,并详细解释了自动释放池的工作原理及内存管理规范。

对象指针:1,对象指针通过操作其指向的内存完成具体的功能

-对象指针指向nil时,称此对象为空对象

-nil为对象指针的默认值

-空对象无任何功能与作用

2,获取对象指针指向的内存地址

-通过alloc或便利构造器获取

-通过方法获取

*局部对象指针

-作用域以大括号为界

-{

        id obj;

  }

*全局对象指针

-手动声明的成员变量

-属性声明的成员变量

*局部对象指针

-一般情况下使用(默认)

-临时变量

*全局对象指针

-推荐全部使用属性

-一个对象为另一个对象的组成部分

-整个对象都需要使用的公用数据

-对象的对外数据接口

*强引用(默认)

-通过__strong或无标识的对象指针

-内存被该类型对象指针使用时不会释放

*归零弱引用

-通过__weak标识的对象指针

-内存被该类型对象指针使用时,随时可能释放

-内存释放后,使用该内存的对象指针被置nil

*弱引用

-通过__unsafe__unretain标识的对象指针

-内存随时释放,且对象指针不被置nil

*自动释放池(可以调节自动释放时间)

---@autoreleasepool{

       //池内

}

本质为一块代码区域,以大括号为界

*自动释放类型对象

-通过__autoreleasing标识的对象指针

-被该对象指针使用过或使用中的内存,出自动释放池即释放,无论对象指针是否存在。

-通过与自动释放池配合和延迟或提前释放内存

*内存管理规范

*一般情况

-除特殊情况外,都是一般情况

-使用strong类型

*特殊类型

-相互引用//强引用循环

-引用链闭环//强引用循环

-通过方法返回创建的额内存地址

-在循环内通过方法创建大量对象

————————当对象释放时,走dealloc方法

//便利构造器

+(instancetype)student

{

 __autoreleasing   Student *s = [[Student alloc]init];

return s;

}如果通过一个方法返回一块儿内存,那这块儿内存必须是被autoreleasing使用过的对象

基本数据类型bool型,int型,double型,用assign

 

转载于:https://www.cnblogs.com/quwujin/p/4741364.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值