一 图片
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方法只是赋值给全局变量 和内存计数无关