对象指针: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