标签:
拆箱装箱
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
标签:
原文地址:http://www.cnblogs.com/dieneufhuang/p/4784323.html