美文网首页
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