美文网首页
内存管理与自动引用 — 第四日

内存管理与自动引用 — 第四日

作者: 徐恩_ | 来源:发表于2016-11-17 07:36 被阅读0次

1.3.4 规则

a. 不能使用 retain/release/retainCount/autorelease

b. 不能使用 NSAllocateObject/NSDeallocateObject

c. 需遵守内存管理的方法命名规则

以 alloc/new/copy/mutableCopy 开头的方法,必须给调用方返回应持有的对象。以 init 开头的方法,必须是实例方法,必须返回一个对象。(我自己试了下,现在,也就是iOS 10.1,xCode 8.1,macOS Sierra 10.12.1,要求没那么严格了,首先是上述几个关键字开头的方法,只要不是和这些关键字开头的系统方法冲突的,都是可以不遵守本规则的,而且我创建了一个 + (void)copy和- (void)alloc都是可以的)

d. 不能显式调用 dealloc

但是可以重写 dealloc方法,且在方法中不必调用[super dealloc]

e. 在 ARC 有效时,使用 @autorelease 代码块而不是 NSAutoreleasePool

d. 不能使用 NSZone 。

因为 NSZone 在很早的版本前的运行时系统中就被忽略了

f. 在 C 语言结构体中不可使用 OC 对象做属性

ARC把内存管理工作交给编译器来管理,因此 LLVM 必须知道对象的生命周期。虽然 C 语言的自动变量(局部变量)可通过作用域来管理对象,但是对于 C 语言结构成员来说,这在标准上是基本不可实现的。

如果必须的话 可使用 __unsafe_unretain 来修饰变量,但要确保变量使用时是有值的

g. 显式转换 id 和 void *

单纯的调用 可使用 __bridge 修饰符。但是 __bridge 的安全性和 __unsafe_unretained 一样,所以我们应该更多的使用 __bridge_retained 和 __bridge_transfer

1.3.4 完

相关文章

  • 内存管理与自动引用 — 第四日

    1.3.4 规则 a. 不能使用 retain/release/retainCount/autorelease b...

  • Obj-C高级编程--内存管理

    自动引用计数 自动引用计数:指内存管理中对引用采取自动计数的技术。 内存管理/引用计数 持有对象引起引用计数加...

  • 内存管理与自动引用计数—第一日

    自动引用计数 1.1 什么是自动引用计数 内存管理中对引用采用自动计数的计数 1.2 内存管理/引用计数 这一张举...

  • iOS面试之内存管理大全

    内存管理内容如下: 内存布局 内存管理 数据结构 ARC/MRC 引用计数 弱引用 自动释放池 循环引用 1.内存...

  • iOS面试之内存管理模块

    内存管理内容如下: 内存布局 内存管理 数据结构 ARC/MRC 引用计数 弱引用 自动释放池 循环引用 1.内存...

  • 2020-03-19【内存管理】

    内存管理 内存布局 内存管理方案 数据结构 ARC & MRC 引用计数 弱引用 自动释放池 循环引用 1.内存布...

  • 目录

    第1章自动引用计数 1.1什么是自动引用计数 1.2内存管理/引用计数 1.2.1概要1.2.2内存管理的思考方式...

  • 内存管理相关面试问题

    本文主讲内存管理相关面试问题,包括内存布局、内存管理方案、数据结构、ARC&MRC、引用计数管理、弱引用管理、自动...

  • [iOS面试]第4章 内存管理相关面试问题

    本文主讲内存管理相关面试问题,包括内存布局、内存管理方案、数据结构、ARC&MRC、引用计数管理、弱引用管理、自动...

  • 内存管理(1)-手动引用计数

    什么是自动引用计数(ARC) 顾名思义,自动引用计数是指内存管理中对引用采用自动计数的计数,让编译器来进行内存管理...

网友评论

      本文标题:内存管理与自动引用 — 第四日

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