1、weak比assign多了一个功能,当对象消失后自动把指针变成nil。所以在arc下,代理属性的声明,使用weak修饰符比assign修饰要好,这样可以避免循环引用。
2、__weak 声明了一个可以自动 nil 化的弱引用。
3、Block属性的声明,首先需要用copy修饰符,因为只有copy后的Block才会在堆中。
4、 Block的原型:
返回值 (^名称)(参数列表)
Block的定义
^ 返回值类型 (参数列表) { 表达式 }
其中返回值类型和参数列表都可以省略,最简单的Block就是:
^{ ; };
一般的定义就是:
返回值 (^名称)(参数列表) = ^(参数列表){代码段};
为了方便通常使用typedef定义:
typedef void (^blk) (void);