iOS内存管理(一)ARC内存管理原则

ARC是自iOS 5之后增加的新特性,基本消除了手动管理内存的烦琐,编译器会自动在适当的地方插入当的retain、release、autorelease语句。你基本不再需要担心内存管,这里说的是基本,不是全部,为什么呢,后面的会讲到。

  • ARC是编译器(时)特性,而不是运行时特性,更不是垃圾回收器(GC),而是编译器特性。这是面试的时候经常被问到
  • 实现原理:
    RAC通过控制变量的作用域和强弱指针的限制,
  • 规则:
    ARC的规则:只要有一个强指针变量只想对象,对象就会保持在内存中不会被释放
  • 强/弱指针:
    ARC模式下默认所有实例变量都是强指针,强指针持有对象
    弱指针指向的对象呗回收后,弱指针回制动复制为nil

在ARC有效的情况下编译源代码,必须遵守一定的规则。下面的就是具体的ARC的具体规则。

  • 不能使用使用retain/release/retainCount/autorelease
  • 不能使用NSAllocateObject/NSDeallocateObject
  • 必须遵守北村管理方法命名规则
  • 不要显示调用dealloc
  • 使用@autoreleasepool块替代NSAutoreleasePool
  • 不能使用区域(NSZone)
  • 对象型变量作为c语言结构体(struct/union)的成员
  • 显示转换“id”和“void”
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • iOS内存管理 概述 什么是内存管理 应用程序内存管理是在程序运行时分配内存(比如创建一个对象,会增加内存占用)与...
    蚊香酱阅读 11,011评论 8 119
  • Cocoa内存管理机制 (1)当你使用new、alloc、copy方法创建一个对象时,该对象的保留计数器值为1.当...
    John_LS阅读 7,760评论 0 6
  • 37.cocoa内存管理规则 1)当你使用new,alloc或copy方法创建一个对象时,该对象的保留计数器值为1...
    如风家的秘密阅读 4,390评论 0 4
  • 内存管理 简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与a...
    丶逐渐阅读 6,070评论 1 16
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,405评论 30 472

友情链接更多精彩内容