蓝懿-打飞机图片,内存管理基础 刘国斌老师

一 图片

1背景图片

因为是两张相同图片不断重复出现  开始时瞬间加载
用for(int i=0,i<2,i++)   开timer实现动作
2飞行效果
是两张图片出现一个位置 长时间变换加载
开timer
int count;
count++;
if(count%2=0){ 
     self.image=[uiimage imagenamed:@"1"]}
else{ 
    self.image=[uiimage imagenamed:@"2"]}
3爆炸效果
多张图片按顺序变换,只重复一次
开timer   若为五张图
int count;
count++;
if(count==5){
  [timer invalidate];
 [self.hero removefromsuperview];
}
self.hero=[uiimage imagenames:@" "; 按顺序显示图片
 
 
二 内存管理基础
有retain assign copy等 是在声明属性的()中设置 用来声明set方法
 retain(strong) 
retain 在set方法中做两件事   1把原来的值release 2 把新传入的值retain
 
 NSmutablearray *b1=[[NSmutablearray alloc]init];
这是一个局部变量 alloc 在堆内存中开辟  内存计数+1 出了局部不会有变量指向这块被开辟的内存  
局部变量会自动 release  
 
如果创建一个retain的属性self.b1
self.b1=[[Nsmutablearray alloc]init];
  alloc开辟内存 内存计数+1   赋值给self  内存计数+1  ;
(此处如果只alloca+1 那么出了局部 被release后 ,则self.b1无法指向被开辟的内存)
此处retain方法的意义就是 把self.b1的值先release  再把等号右边传入的值retain 到 self.b 
此时内存计数为2
 
若同时两个
self.b1=[[Nsmutablearray alloc]init];
self.b1=[[Nsmutablearray alloc]init];
第一次retain 内存计数+2   第二次内存计数又+2同时-1
如果此处第二次retain不先把self.b1第一次的值释放掉  
那么第二次retain会直接把self.b1指向第二次alloc 开辟的堆内存中  
则第一个alloc开辟的内存无变量指向 无法调用 成为内存泄露
 
assign (assign)
一般类似int float 这种用  会让set方法只是赋值给全局变量 和内存计数无关

 

转载于:https://www.cnblogs.com/dieneufhuang/p/4780724.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值