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