码迷,mamicode.com
首页 > 其他好文 > 详细

拆箱装箱 页面跳转 及内存管理 0905蓝懿教育

时间:2015-09-06 06:17:33      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

拆箱装箱

 
数组中只能装入对象,而很多时候我们需要把类似Int 或者结构体这种装入
此时我们需要进行拆装
基本思想是 把类似int还有结构体 转换成相对应的对象 然后加入数组 ,导出时 要从对象型变成对应的int或者结构体类
@property NSmutableArray *ages;
self.ages=[NSmutableArray  Array];
 
int x=1;
NSnumber *objectnumber=x;
[self.ages addobject:objectnumber];
NSnumber *newobjectnumer=self.ages[0];
int newx=[newonjectnumer intvalue];
 
 
 
 
 
页面跳转
第二章页面类为SecondViewController
静态页面一般用storyboard创建 注意要喝VierController进行关联
此时  SecondViewController *l1=[self.stroryboard instantiatedViewControllerWithIdentifier:@"此处填写storyboard中的ID"];
[self presentViewController:l1 animated:YES completion:nil];
 
在第二章页面中回跳
[self dismissViewController:YES animated:nil];
 
 
 
 
 
 
内存管理初步

MRC手动内存管理中三个方法

retain 导致内存计数+1

release 导致内存计数-1

copy 复制出来一个新的对象 和之前对象的数据可能一致 但并不是同一个对象 所以内存计数+1

autorelease: 自动释放  当变量出了自动释放池(autoreleasepool)之后会自动释放

自动释放池在项目中有很多看不见

 

 

在ARC中;

retain(strong)  先把原先的值release  再把新导入的值retain

assign (weak)  一般基本数据类型用 int float 内存计数不变

readonly 会让属性只生成get方法 无set方法;

self.names=name   在readonly下会报错  在左边调用的set方法

NSSmutablearray *l1=self.names  self.names在右边调用的就是get方法

 

和多线程相关

nonatomic 非原子性操作  不安全 效率高 非多线程都用

atomic 原子性操作   线程是安全的 效率低 只有多线程访问数据的时候才有可能会使用此关键字

 

创建属性时间要写

@property(nonatomic,strong)NSMutablearray *friends;

@property(nonatomic)int *age;

字符串特例 要写copy型

@property(nonatomic,copy)NSString *name;  (如果是strong 指向同一个内存空间 把他赋值给别的变量的话

他们指向同一块内存空间  如果改变最开始的nsstring 那么之后的都会被改变  所以用copy)

 

属性声明时+1会在当前对象销毁时 执行dealloc

 

self.enemys=[[NSmutableArray alloc]init]

self.enemys=[NSmutableArray array]; 工厂方法 多的就是在执行上面的alloc和init后 还添加了autorelease

 

 

总结

1.基本数据类型 用assign或者weak 但因为默认 所以不用写

2.所有的对象类型  (除了NSString)都用strong或者retain

3.NSString 用copy

拆箱装箱 页面跳转 及内存管理 0905蓝懿教育

标签:

原文地址:http://www.cnblogs.com/dieneufhuang/p/4784323.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!