IOS学习 -- OC内存管理

/***************************内存管理*******************************/


引用计数器: oc对象被引用的次数,为0的时候该对象被销毁,内存回收。
retain() :引用次数+1; 返回的是对象本身
release() : 引用次数—1;没有返回值
retainCount():获取引用次数。
dealloc():oc对象被销毁的时候会调用dealloc方法,继承该
方法(放最后面[super dealloc])并重写


ios 的main函数是死循环 ?


创建对象alloc  给对象分配内存空间, 计数器+1;
有alloc就有release,有retain就有release。


野指针:指向僵尸对象(不可用内存)的指针。
(EXC_BAD_ACCESS:访问被回收的内存错误,野指针错误。为避免这种错误,
在release之后 引用计数器=0的时候, 将对象设为nil)
oc没有空指针错误!!




/*************************多对象内存管理**************************/


@property (nonatomic ,retain) Book *book ;对象成员变量
oc用retain ,其他用assign(特殊情况 循环引用用assign)


 1.set方法内存管理相关的参数
 * retain : release旧值,retain新值(适用于OC对象类型)
 * assign : 直接赋值(默认,适用于非OC对象类型)
 * copy   : release旧值,copy新值
 
 2.是否要生成set方法
 * readwrite : 同时生成setter和getter的声明、实现(默认)
 * readonly  : 只会生成getter的声明、实现
 
 3.多线程管理
 * nonatomic : 性能高 (一般就用这个)
 * atomic    : 性能低(默认)
 
 4.setter和getter方法的名称
 * setter : 决定了set方法的名称,一定要有个冒号 :
 * getter : 决定了get方法的名称(一般用在BOOL类型)


/*************************@class与循环引用**************************/


@class Car(类名)  :告诉编译器 car是一个类
使用@class 就不用#import来导入类。
引用一个类的规范
 1> 在.h文件中用@class来声明类
 2> 在.m文件中用#import来包含类的所有东西


 循环引用: 一段 retain ,一端 assign

 
/*****************autorelease 与 @autoreleasepool ***************/
 
 @autoreleasepool
 {//创建池子
Person *p = [[[Person alloc] init] autorelease];
Person *p = [Person person];
 }//回事池子 并将池子里的对象release一次。
 
 写一个类方法
 + (id) person{
return [[[self alloc] init] autorelease];
 }
 
 + (id) personWithAge:(int) age{
Person *p = [Person person];
p.setage = age;
return p;
 }
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值