atomic:提供多线程安全,原子操作.一种线程保护技术.防止在写未完成的时候被另外一个线程读取,产生数据错误.
nonatomic:禁止多线程,指定nonatomic,访问器只是简单地返回这个值,如果不指定,那么访问器保留并返回值.
assign:基本的数据类型int NSInteger bool float ... 直接赋值
retain:release旧值,在retain新值 指针拷贝
copy:为了防止原数据更改影响使用之后的数据->使用copy(拷贝的内容必须遵守拷贝协议)数组字典字符串 内容拷贝
weak:弱引用 如果还没有人指向它了,它就会被清除内存,同时被指向nil,因为我不能读取不存在的东西。
strong:表示保留它指向的堆上的内存区域不再指向这块区域了。也就是说我强力指向了一个区域,我们不再指向它的条件只有我们指向nil或者我自己也不在内存上,没有人strong指向我了,weak表示如果还没有人指向它了,它就会被清除内存,同时被指向nil,因为我不能读取不存在的东西。本地变量都是strong,编辑器帮你计算
alloc 与new的区别:
1.在实际开发中很少会用到new,一般就是alloc.new和alloc功能几乎是一致的,分配内存并完成初始化.
new 与alloc之间的区别:
alloc分配内存的时候使用了[zone] -> 给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域,目的是调用时消耗很少的代价,提升了处理的速度.
而new的方式只能采用默认的init方法完成初始化,采用alloc 的方式可以用其他定制的初始化方法.
self与_的区别
self.programStack等于[self programStack],会走你的懒加载方法,
网友评论