创建对象 1.分配内存空间,存储对象 2.初始化成员变量 3.反回对象的指针地址
二 注意事项
1.对象在完成创建的同时,内部会自动创建一个引用计数器,这个计数器,是系统用来判断是否回收对象的唯一依据,当我们的引用计数retainCount = 0的时候,系统会毫不犹豫回收当前对象 //2.[对象 release] reatinCount - 1 //3.[对象 retain] reatinCount + 1 ,返回self //4.我们的引用计数retainCount = 0的 对象就被销毁了
//5.dealloc函数,当一个对象要被销毁的时候,系统会自动调用dealloc函数,通知对象你将要被销毁
//内存管理原则(配对原则):只要出现了 new,alloc,retain,就一定配对出现一个release,autorelease
三手动内存管理研究问题方法
.1野指针操作
(1)如果你确定当前作用于中的对象已经不会再被使用了,为了防止野指针操作,通常我们会把不在使用的指针变量赋值为nil
(2)避免野指针操作的方法 [nil resele]
(3)野指针操作,当一个对象retainCount已经为0 时,调用retain方法,是不会使得对象起死回生的,同时还会发生野指针操作异常
2内存泄漏;
(1)内存泄漏指的就是,不再被使用的对象,一直在内存中没有被销毁
四,@property参数
1.生产get与set方法的声明2.生成get与set方法的简单实现
3.若果你没有声成名相对象的成员变量,那么他会自动生成一个_开头的成员变量
@property 参数分为4类
1.与set方法内存管理相关参数retain: 要生成符合内存管理原则的set方法(应用与对象类型)assign: 直接赋值,(对象类型,基本数据类型)copy : (后面讲解)
2.多线程相关//nonatomic: 不生成多线程线管代码,使用这个就可以了(效率高一点)//atomic:生成多线程线管代码(不写默认是这种方式)//实际开发中,只要是对象类型的@property都写成下面
2.多线程相关//nonatomic: 不生成多线程线管代码,使用这个就可以了(禁止多线程,变量保护,提高性能。效率高一点)//atomic:生成多线程线管代码(不写默认是这种方式)(atomic提供多线程安全,是描述该变量是否支持多线程的同步访问,如果选择了atomic 那么就是说,系统会自动的创建lock锁,锁定变量)//实际开发中,只要是对象类型的@property都写成下面
4.set与get方法名称相关的参数//setter:设置生成的set方法名称//getter:设置生成的get方法名称
改变set与get方法名称很多都是用在BOOL类型的变量