• __ block


    1.__block对象在block中是可以被修改、重新赋值的。 
    2.__block对象在block中不会被block强引用一次,从而不会出现循环引用问题。

    API Reference对__weak变量修饰符有如下几处解释:

    __weak specifies a reference that does not keep the 
    referenced object alive. A weak reference is set to nil when
    there are no strong references to the object.

    使用了__weak修饰符的对象,作用等同于定义为weak的property。自然不会导致循环引用问题,因为苹果文档已经说的很清楚,当原对象没有任何强引用的时候,弱引用指针也会被设置为nil。

    因此,__block和__weak修饰符的区别其实是挺明显的: 
    1.__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型。 
    2.__weak只能在ARC模式下使用,也只能修饰对象(NSString),不能修饰基本数据类型(int)。 
    3.__block对象可以在block中被重新赋值,__weak不可以。 
    PS:__unsafe_unretained修饰符可以被视为iOS SDK 4.3以前版本的__weak的替代品,不过不会被自动置空为nil。所以尽可能不要使用这个修饰符。

    只需记住 : 当需要在block中修改外部变量的值时,只需要在外部变量前加上'__block'修饰,block内部就可以使用并修改外部变量值了!

  • 相关阅读:
    Java 基础知识总结
    AppScan-文件参数Shell命令注入
    AndroidKiller-下载使用
    代码技巧之常用快捷键的整理
    z-index的特点
    定位元素的异同点
    定位之固定定位
    定位之相对定位
    clear的值和特点及伪元素before和after的使用
    如何让元素消失在我们的视野中(面试题)
  • 原文地址:https://www.cnblogs.com/xjy-123/p/5155074.html
Copyright © 2020-2023  润新知