内存管理

1. 引用计数器:用来保存当前对象有几个东西在使用它(数字)

2. 引用计数器的作用:用来判断对象是否应该回收内存空间(如果对象不等于nil,当引用计数器为0,此时要挥手对象的内存空间)

3. 引用计数器的操作: retain  使用引用计数器+1

release  使得引用计数器-1

retain count  得到引用计数器的值

4. 如果一个被释放的时候,会“临终遗言”(会调用该对象的dealloc方法)

注意:

1)dealloc方法是NSObject的,一般我们要重写dealloc方法

2)在dealloc方法的内部,要调用[super dealloc];

5.内存管理:对象如果不在使用了,就应该回收他的空间,防止造成内存泄漏

6.内存管理的范围: 所有的继承了NSObject的对象的内存管理,基本数据类型的数据内存不需要我们进行管理

7.内存管理的原则:

如果对象有人使用,就不应该回收

如果你想使用这个对象,应该让这个对象 retain一次

如果你不想使用这个对象了,应该让这个对象relase一次

谁创建 谁release

谁retain 谁release

                          ARC

1.指针的分类:

1)默认情况下,所有的指针都是强指针,关键字strong

2)弱指针: __weak关键字修饰的指针

2. 什么是ARC

自动引用计数,当ARC开启式,编译器将自动在代码合适的地方插入retain release 和 autorelease

ARC与其他语言的”垃圾回收”机制不同,ARC是编译器的特性,”垃圾回收”运行时的特性

3. ARC的判断准则:  只要没有强指针指向对象,对象会被释放

4.__strong 是一个修饰符,修饰这个指针是一个强指针  __weak修饰这个指针是弱指针

@property的参数:  strong相当于原来的retain(适用于OC对象类型),成员变量是强指针

weak: 相当于原来的assign,(适用于OC对象类型),成员变量是弱指针

assign:适用于非OC对象类型(基础类型)

5. ARC使用注意事项:

1)ARC中,只要弱指针指向的对象不再了,就直接把弱指针做清空(赋值nil)操作

2)__weak Person *p =[(Perspn alooc)init];这句话不合理,因为刚创建出来就释放了,因为是弱指针

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 29.理解引用计数 Objective-C语言使用引用计数来管理内存,也就是说,每个对象都有个可以递增或递减的计数...
    Code_Ninja阅读 5,501评论 1 3
  • 内存管理 简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与a...
    丶逐渐阅读 6,070评论 1 16
  • iOS内存管理 概述 什么是内存管理 应用程序内存管理是在程序运行时分配内存(比如创建一个对象,会增加内存占用)与...
    蚊香酱阅读 11,011评论 8 119
  • 内存管理是程序在运行时分配内存、使用内存,并在程序完成时释放内存的过程。在Objective-C中,也被看作是在众...
    蹲瓜阅读 8,471评论 1 8
  • 重回那记忆深处的地方,眼前的景象变得那么渺小。远处的孩童传来阵阵嬉笑,熟悉得叫我心惊。还是老地方,还是老景象,童年...
    大同大学张宁阅读 1,756评论 0 0

友情链接更多精彩内容