美文网首页
iOS property属性了解 沙盒以及内存的区域划分

iOS property属性了解 沙盒以及内存的区域划分

作者: Youthfulless | 来源:发表于2018-03-16 11:53 被阅读12次

1:原子性:nonatomic,atomic

2: 读写: readwrite, readonly;

3:内存:strong , retain, copy, weak,assign

知识点:

///1

atomic:原子性,只有一个线程可以同时访问实例。atomic是线程安全的,至少在当前的读取器是安全的。虽然它是一个默认属性,但是由于其使用同步锁开销较大,会损耗性能。

nonatomic:非原子性的,可以被多个线程方法。效率要比atomic高,但是不能保证其在多线程状态下的安全性,在单线程和明确只有一个线程访问的情况下被广泛使用。

///2

readwrite(默认值): 表示其同时拥有getter和setter方法

readonly:只读操作,只有getter方法 没有setter方法�

///3

assign:用于值类型(如int,float等)

weak:用于修饰引用类型

区别:

1:assign 一般只修饰值类型,修饰的对象释放后,指针不会自动被置为空,此时向对象发消息会崩溃。

2:weak不会出现野指针问题,因为weak修饰的对象释放后(引用计数器值为0),指针会自动被置为nil,之后再向该对象发消息也不会崩溃。weak是安全的。

strong:用于引用类型,强引用。

retain:用于引用类型,强引用。

copy:修饰属性会在内存里拷贝对象。

区别:

1:三者都修饰引用类型。

2:strong 用于ARC, retain用于MRC

3:copy分为浅层复制和深复制两种,nsstring,nsarray,nsdictionary等不可变类型都为浅层复制,即其引用计数会+1,而不会创建新的内存。

///4沙盒的目录结构

1:Documents:保存应用运行时生成的需要持久化的数据,该目录会被iTunes同步备份。

2:Library/Caches: 保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积大,不需要备份的非重要的数据,如缓存图片或者离线数据(地图等)。

3:Library/Preferences:保存应用的所有偏好设置,iOS的setting应用会在改目录中查找应用的设置信息。iTunes同步设置会备份该目录。

4:tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时不会备份该目录,重启手机,系统磁盘不足都会被清理。

///5理解内存中的区域划分

栈区:系统自动分配和释放,容量小速度快。 有序。

堆区:由程序员分配和释放,如果释放不及时,则出现内存泄露。程序会回收内存。(特点:容量大,速度慢,无序)

静态存储区:存放全局变量和静态变量。程序结束时,系统自动回收。

常量区:存放常量的内存区域,程序结束时,系统回收。

代码区:存放二进制代码的区域。

相关文章

网友评论

      本文标题:iOS property属性了解 沙盒以及内存的区域划分

      本文链接:https://www.haomeiwen.com/subject/ssllqftx.html