界面通信的三种方法:

  • 属性传值:将第一页页面的值传给第二个页面。
  • 代理传值:实现界面传值要6步:
  1. 声明协议和协议的方法
  2. 声明代理
  3. 传值的内容
  4. 遵守协议
  5. 设置代理
  6. 调用协议的方法
  • Block传值:用于页面之间通信,同时可以进行传值。(使用场景类似协议传值,都是解决从后一个页面往前一个页面传值问题)

void(^block)(void) = ^(void)
{ }; 其中:
1.void(^block)(void)是类型   
2.block是变量名   
3.^(void){};是block实现。//在block内部不能直接修改局部变量的值,如果想修改必须声明成__block类型的变量或者static 。

Block内存管理:没有使用局部变量的block内存存储在全局区。block内部使用局部变量的时候内存存储在栈区。

当block变量定义为属性的时候,必须使用copy修饰,retain无效,即retain和assign会造成野指针问题。
当对block进行copy操作的时候,此时block的内存区域为堆区。

当不使用block时需要使用Block_Release()进行销毁。

在非arc下使用_block修饰变量来防止循环引用。在arc下使用_weak修饰变量来防止循环引用。

posted on 2016-05-17 21:40  钎探穗  阅读(133)  评论(0编辑  收藏  举报