美文网首页
OC的内存管理

OC的内存管理

作者: 东方奇迹 | 来源:发表于2020-07-04 15:33 被阅读0次

1、OC的内存管理

OC是通过引用计数进行内存管理的,其核心思想遵循“谁创建谁释放;谁引用谁管理”。

OC的内存管理方式有两种:

一种是MRC(即手动内存管理)。当我们使用alloc、new创建对象时,或向对象发送retain、copy消息时,对象的引用计数会+1;当向对象发送release、autorelease消息时,对象的引用计数会-1;当对象的引用计数为0时,该对象会调用dealloc方法进行释放。

另一种是ARC(即自动内存管理)。IOS5时推出,是编译时特性,在编译代码时,会在适当的位置加上retain、release、autorelease。在ARC中引用了两个新的修饰词:strong、weak。strong是强引用,强引用指向的对象不会被释放,一个对象没有强引用指向时会立即释放;weak是若引用,弱引用指向的对象在释放时自动置为nil。在ARC中判断一个对象是否被释放,就看是否有strong指向它。

2、内存管理混合方式

在Build Phase里面的Compile Source里面找到需要特殊处理的文件,加上编译选项(Compiler Flags)。

  • 在MRC工程中添加ARC文件,给ARC文件添加-fobjc-arc;
  • 在ARC工程中添加MRC文件,给MRC文件添加-fno-objc-arc;

3、weak和assign的区别

weak和assign都不会增加引用计数,区别是修饰的对象在释放时所作的操做不同,weak是会把对象置为nil,assign则不会,assign一般适用于基本数据类型。

相关文章

  • 内存管理

    一.内存基本介绍 1、OC内存管理的基本概念 2、OC内存管理的范围​管理范围:管理任何继承自NSObject的对...

  • 内存管理

    目录一、内存分区 1、RAM和ROM 2、内存的五大分区二、内存管理 1、OC内存管理是指什么?OC内存管理的本质...

  • OC的内存管理

    1、OC的内存管理 OC是通过引用计数进行内存管理的,其核心思想遵循“谁创建谁释放;谁引用谁管理”。 OC的内存管...

  • Lesson 0-1 Objective-C basic

    6.OC 手动内存管理 OC 内存管理原则: 只要使用 alloc, new, copy, mutableCopy...

  • iOS之从MRC到ARC内存管理详解

    概述 在iOS中开发中,我们或多或少都听说过内存管理。iOS的内存管理一般指的是OC对象的内存管理,因为OC对象分...

  • iOS五大块知识总结之内存管理

    1.1 管理的原因 只有OC对象才需要管理内存,非OC对象(如:char、int、folat)则不需要管理内存的本...

  • iOS 中堆和栈的区别以及冒泡排序

    在引入堆和栈之前,先要知道,iOS中的内存管理范围: OC对象需要进行内存管理,非oc对象不需要进行内存管理,比如...

  • OC的内存管理

    最近系统地复习了OC的内存管理,所以总结下. OC是通过引用计数(reference count)来管理内存.自...

  • OC关于在MRC模式下的内存管理学习

    内存管理 管理范围 任何继承NSObject的对象 只有OC对象才需要进行内存管理的本质原理 1.OC对象在堆中 ...

  • 内存管理

    内存管理的重要性。 不进行内存管理和错误的内存管理会造成以下问题。 内存泄露 悬挂指针 OC内存模型 内存管理是通...

网友评论

      本文标题:OC的内存管理

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