`

iOS之ARC下的Block

阅读更多
http://www.cnblogs.com/tekkaman/archive/2012/05/02/2478601.html
 

ARC的特性

  ARC下,所有NSObject类型指针,

  1. 默认为__strong类型

  2. 可以显示的指定为__weak类型,__weak类型指针在所指向对象销毁后会自动置为nil

  3. __autorelesing类型用于inout参数类型

  ARC下,当一个函数返回一个NSObject指针时,编译器会帮我们实现autorelease调用。例如:

  return pObject;

  编译器会帮我们扩展为 return [pObject autorelease];

  ARC下,不能显式release,可以使用将值赋为nil来让编译器为我们release。

ARC与Block

  Block的生命周期管理非常的微妙,与ARC混在一起后,更加复杂。

  当Block延stack向上(up)传递的时候,直接返回,编译器会添加[[ copy] autorelease]代码。

  当Block延stack向下传递给需要retain的容器的时候,需要显式的调用[^{} copy]方法。

  在ARC下,__block修改的NSObject指针依然会被retain。

  在ARC下,一个block内引用一个对象的实例变量后,self会被retain,所以极易造成strong reference cycle,可以通过__weak指针来避免这种情形,因为ARC不会为__weak指针retain。

 

分享到:
评论

相关推荐

    ARC完全指南ios

    ARC完全指南ios 包括arc相关属性,block,bridge

    ios 5 ARC 完全指南

    介绍arc的不错的书籍,weak ,strong,unsafe_unretain ,block的介绍

    iOS block实现,内存管理

    翻译的Pro Multithreading and Memory Management for iOS and OS X with ARC, Grand Central Dispatch, and Blocks中的block章节

    iOS开发进阶-完整目录-高清

    iOS开发进阶 唐巧 完整目录 高清 讲述了开发过程中一些工具的应用。和一些重要的知识点 如ARC block。

    iOS Programming: The Big Nerd Ranch Guide (4th Edition) 2014 epub

    ARC and strong and weak references Handling touch events and gestures Toolbars, navigation controllers, and split view controllers Using Auto Layout to scale user interfaces Using Dynamic Type to ...

    iOS Programming: The Big Nerd Ranch Guide (4th Edition) (Big Nerd Ranch Guides)

    ARC and strong and weak references Handling touch events and gestures Toolbars, navigation controllers, and split view controllers Using Auto Layout to scale user interfaces Using Dynamic Type to...

    Pro Multithreading and Memory Management for iOS and OS X

    Pro Multithreading and Memory Management for iOS and OS X with ARC, Grand Central Dispatch, and Blocks

    Blocks编程要点[中文完整翻译版]- Blocks Programming Topics

    iOS 5.0之后的ARC也是无法解决该潜在的互相引用的问题的。所以写Block的时候要注意这点。因为Block往往在后台自动对一些它引用了的对象进行retain操作。具体形式这里就不距离了,大家在使用的时候多体会一下。 本文...

    Blocks 编程要点

    iOS 5.0之后的ARC也是无法解决该潜在的互相引用的问题的。所以写Block的时候要注意这点。因为Block往往在后台自动对一些它引用了的对象进行retain操作。具体形式这里就不距离了,大家在使用的时候多体会一下。

    Block反向传值Demo

    ARC Block反向传值Demo 新手学block的可以看看,我也是新手学的刚学会。

    Objective-C高级编程iOS与OS X多线程和内存管理(英文版)

    《Objective-C高级编程:iOS与OS X多线程和内存管理》在苹果公司公开的源代码基础上,深入剖析了对应用于内存管理的ARC以及应用于多线程开发的Blocks和GCD。

    IOS 水滴拖拽效果动画

    作者smallmuou,源码PPDragDropBadgeView,实现了类似于QQ 5.0 水滴拖拽效果,支持iOS 5.0 ARC,气泡能够带有数字标识,同时支持消失block方法。消失时还带有消失效果动画。

    史上最全的iOS面试题及答案 - 张明炜 - ITeye技术网站1

    1.__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型 2.__weak只能在ARC模式下使用,也只能修饰对象(NSSt

    最新ios入学基础班视频教程-视频

    内包含百度云盘地址,视频内容分为两大部分,c语言基础,和oc入门基础视频,目录,1.oc语法基础2.类与对象3.封装4.继承与多态5oc特有的语法6内存管理7ARC与分类8block与协议9-Foundation

    QQ5.0水滴拖拽效果PPDragDropBadgeView(iOS源代码)

    支持iOS 5.0+ ARC. 气泡能够带有数字标识,同时支持消失block方法。消失时还带有消失效果动画。 小编注:感谢用户@寻不到的梦(gitHub: smallmuou) 上传代码! 测试环境:xcode6.3 iOS8.3。 效果图: 使用...

    ObjC高级编程

    ObjC高级编程,主要是关于Arc的实现,Block的实现进行了分析及详细讲解,IOS开发进阶必看

    破解Objective-C面试:笑到最后的技术攻略!.zip

    技术关键词:Objective-C、iOS开发、Mac OS X、编程语言、面向对象编程、内存管理、自动引用计数(ARC)、协议(protocol)、类扩展(category)、键值观察(KVO)、键值编码(KVC)、Block、Delegate模式、多态性、...

    Reachability(iPhone源代码)

    相对于苹果官方的Reachability,这是一个更加高级、更加好用的Reachability,支持ARC、支持block、使用GCD方式来通知网络的变化。 小编注:感谢开发者@shishirui 推荐代码于Code4App。 Code4App编译测试,适用环境...

    Activity Bar(iPhone源代码)

    显示HUD时,不会阻碍(block)当前操作。支持显示多个HUD,以队列(queueable)的形式显示和消失,HUD上还提示当前有多少个HUD在显示队列中。不支持ARC。 Code4App编译测试,适用环境:Xcode 4.5, iOS 5.0 以上。

    支持队列显示的HUD效果

    该源码由源码天堂IOS源码频道免费提供下载。支持队列显示的HUD效果。用于提示用户某个交互动作已经完成,显现之后自动消失。显示HUD时,不会阻碍(block)当前操作。支持显示多个HUD,以队列(queueable)的形式显示...

Global site tag (gtag.js) - Google Analytics