美文网首页
block 的 MRC 和 ARC 的内存管理 和 其他理论知识

block 的 MRC 和 ARC 的内存管理 和 其他理论知识

作者: Fade1992 | 来源:发表于2019-04-09 18:30 被阅读0次
blcok是一个对象
定义:官方文档-> Window -> Documentation and API Refrence -> 搜索 working with blocks (关于原理性)   
结果:Blocks are objective-C objects 

判断工程使用MRC还是ARC

  • dealloc 能否被调用,只有MRC 才能调用super
  • retain 和 release 能否使用

修改方法:
Budld Setting -> 搜索ARC -> objective-c Automic Refrence Counting 切换 YES or NO


ARC 管理原则:

  • 只要一个对象没有被强指针修饰就是被销毁,默认局部变量对象都是强指针,存放到堆里面

MRC 开发常识

  • 1.MRC没有Strong、weak 局部变量对象就是相当于基本数据类型
  • 2.MRC给成员属性赋值 一定时候用Set方法,不能直接访问下划线成员属性赋值

堆、栈、全局区
  • MRC 管理总结

    • 只要block没有引用外部局部变量,block放在全局区 (NSGlobalBlock)
    • 只要block引用外部局部变量block放在栈里面(NSStackBlock)
    • block 只能使用copy(堆 NSMallocblock) 不能使用retain(NSStackBlock)
  • ARC 中的内存管理

    • 只要block没有引用外部局部变量,block放在全局区 (NSGlobalBlock)
    • 只要block引用了外部局部变量block 在堆中
    • block 使用Strong 不要使用weak

blok的变量传递
1.如果是局部变量 block 是只传递
2.如果是静态变量、全局变量、 __block修饰变量 block 是指针传递

相关文章

  • block 的 MRC 和 ARC 的内存管理 和 其他理论知识

    判断工程使用MRC还是ARC dealloc 能否被调用,只有MRC 才能调用super retain 和 rel...

  • 5.Block的内存管理 内存管理

    内存管理 无论当前环境是ARC还是MRC,只要block没有访问外部变量,block始终在全局区 MRC情况下 b...

  • Block

    block的内存管理: 无论当前环境下是arc还是mrc,只要block没有访问外部变量,block始终在全局区 ...

  • Block 内存管理(ARC)

    上篇文章介绍了MRC环境下,Block内存管理,紧接着此篇介绍ARC环境下Block的内存管理。 介绍之前我们需要...

  • OC中内存管理

    在OC中内存管理MRC手动内存管理和ARC自动内存管理,ARC是从iOS 4.0开始,在iOS 4.0之前...

  • block内存管理和循环引用

    block内存管理 MRC: 在mrc中没有strong和weak;用copy修饰block;因为block刚刚声...

  • iOS面试题-block

    block的内存管理 无论当前环境是ARC还是MRC,只要block没有访问外部变量,block始终在全局区 MR...

  • Block

    Block block内存管理 无论是MRC还是ARC,只要block没有访问外部变量,blokc始终在全局区 M...

  • 内存管理-MRC和ARC&引用计数管理

    MRC和ARC MRC 通过手动引用计数来进行对象的内存管理 ARC 通过自动引用计数来管理内存,之前我认为编译器...

  • 面试问题记录 2

    1 ARC与MRC的内存管理 以及是如何实现的 ? 答:MRC 和 ARC 都是编译器特性,(Objective-...

网友评论

      本文标题:block 的 MRC 和 ARC 的内存管理 和 其他理论知识

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