美文网首页
ARC规则-规则

ARC规则-规则

作者: 关灯侠 | 来源:发表于2018-09-15 20:52 被阅读14次

所有内容引用自《Objective-C 高级编程 iOS与OS X多线程和内存管理》,加入了自己的部分理解。

本节小结,点小1跳到底部[1]


  • 不能使用retain/release/retainCount/autorelease
  • 不能使用NSAllocateObject/NSDeallocateObject
  • 须遵守内存管理的方法命令规则
  • 不要显示调用dealloc
  • 使用@autoreleasepool块替代NSAutoreleasePool
  • 不能使用区域(NSZone)
  • 对象型变量不能作为C语言结构体(struct/union)的成员
  • 显示转换idvoid *
部分解释
对象型变量不能作为C语言结构体(struct/union)的成员

例如这样就是不允许的

struct Data{
    NSArray *array;
};

原因: C语言没有方法管理结构体成员的生存周期。
ARC环境中编译器管理内存,必须知道对象的生命周期。但C结构体不在管理范围内,所以不能直接使用。

可加上__unsafe_unretained修饰,让变量不属于编译器管理的对象。需要自己管理,注意内存泄露。

显示转换id和void*

如果转换?(为啥要转换?还不知道)

id obj = [[NSObject alloc] init];
void *p = (__bridge void *)obj;
id o = (__bridge id)p;

注: __bridge void *这种转换跟__unsafe_unretained一样不安全,容易产生悬垂指针导致crash

__bridge_retained 相当于 retain
__bridge_transfer 相当于 release

为啥要转换? 因为Objective-CCore Foundation对象之间相互变换就需要用到。

Objective-C对象和Core Foundation对象没有区别,ARC无效时,可以用简单的C语言的转换也能实现互换。

因为转换不需要额外的CPU资源,所以也叫免费桥(Toll-Free Bridge)

属性

属性声明的属性与所有权修饰符的对应关系

属性声明的属性 所有权修饰符
assign __unsafe_unretained修饰符
copy __strong修饰符(赋值的是被复制的对象)
retain __strong修饰符
strong __strong修饰符
unsafe_unretained unsafe_unretained修饰符
weak __weak修饰符

小结

主要有一个规则、一个属性对应关系


  1. 😊假装是锚点的脚注

相关文章

  • ARC规则-规则

    所有内容引用自《Objective-C 高级编程 iOS与OS X多线程和内存管理》,加入了自己的部分理解。 本节...

  • ARC规则

    title: ARC规则date: 2016-03-17 16:49:05categories: iOStags:...

  • ARC环境下的内存管理

    一、ARC强制实施的新规则 为了工作,ARC强加了一些在使用其他编译器模式时不存在的新规则。这些规则旨在提供一个完...

  • ARC

    设置ARC有效的编译命令: -fobjc-arc Xcode 4.2 默认设定为对所有的文件 ARC 有效 规则:...

  • 内存管理 - ARC规则

    ARC有效时,所有权修饰符一共有4种: * __strong 修饰符* __weak 修饰符* __unsafe_...

  • iOS ARC有效时必须遵守的规则

    ARC有效必须遵守的规则: 不能使用 retain/release/retainCount/autorelease...

  • iOS面试题整理(一)

    1.ARC MRC GC (1)ARC 自动技术管理 ARC的规则就是只要对象没有强指针引用,就会被释放掉,换而言...

  • OC高级编程iOS内存管理-第1章-自动引用计数

    自动引用计数 什么是自动引用计数内存管理/引用计数ARC规则ARC的实现 1.1 什么是自动引用计数 ARC和MR...

  • iOS ARC 规则 : __strong, __weak, _

    内存管理的思考方式 : 自己生成的对象, 自己持有 非自己生成的对象, 自己也能持有 自己持有的对象, 不使用时要...

  • IOS内存管理(一)基本概念与原理

    文章结构 1.内存管理的基本规则2.autoreleasePool3.ARC管理方法3.1 ARC 引入的四个ow...

网友评论

      本文标题:ARC规则-规则

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