"iOS面试题:OC内存管理与属性作用"

需积分: 9 2 下载量 103 浏览量 更新于2024-01-03 收藏 68KB DOC 举报
iOS中的内存管理机制是基于引用计数的。每个对象都有一个引用计数器,通过retain和release来操作引用计数的增减,当引用计数为0时,该对象会被释放掉。 在OC中,retain和release是配对使用的方法。当我们需要增加一个对象的引用计数时,我们使用retain方法;而当我们需要减少一个对象的引用计数时,我们使用release方法。retain会使引用计数加1,而release会使引用计数减1,当引用计数为0时,对象会被释放掉。 与alloc配对使用的方法是dealloc。alloc用于分配对象的内存空间,而dealloc则用于销毁对象的内存空间。当一个对象不再被使用时,我们需要手动调用dealloc方法来销毁对象的内存空间。 下面是对一些属性修饰词的作用进行简述: 1. readwrite:此标记说明属性可以被当成读写的,也就是可以设置和获取。这也是默认的属性。 2. readonly:此标记说明属性只可以被读取,不能设置。只能通过getter方法来获取属性的值。 3. assign:不会使引用计数加1,也就是直接赋值。通常用于基本数据类型,如int、float等。 4. retain:会使引用计数加1。适用于属性的值是对象类型。 5. copy:建立一个索引计数为1的对象,在赋值时使用传入值的一份拷贝。适用于需要保护原始数据的属性。 6. nonatomic:非原子性访问,多线程并发。在多线程环境下使用nonatomic属性可以提高性能,但是会增加数据不一致的风险。 7. atomic:原子性访问,多线程安全。在多线程环境下使用atomic属性可以保证数据的一致性,但是会降低性能。 8. strong:强引用,引用计数加1,并持有该对象。通常用于拥有关系的属性。 9. weak:弱引用,不会增加对象的引用计数,当被引用的对象被释放时,弱引用会自动置为nil。通常用于避免循环引用的情况。 综上所述,OC中的内存管理机制是通过引用计数来管理内存的,retain和release是配对使用的方法,dealloc与alloc配对使用。属性修饰词用于描述属性的读写权限、引用计数的增减以及多线程环境下的访问方式。不同的修饰词在不同的场景下有不同的作用,开发者需要根据具体的需求来选择适合的修饰词。