使用块而不是委托来传回数据

时间:2016-09-22 06:42:11

标签: ios objective-c objective-c-blocks

我一直在尝试使用块传递数据

向后发送数据

secondViewController .h文件中声明阻止

@property (nonatomic, copy)void(^myBlock)(NSString *);

调用块,无论您需要从secondViewController的.m文件传递数据

myBlock(@"this will displayed in firstViewController");

3.在firstViewController .m文件中导入.h文件,并将您的块定义为

secondViewController *ref =[[secondViewController alloc ]init];
 ref.myBlock =^void(NSString *data)
{
self.labelOffirstviewcontroller=data;
};

在运行时我得到EXC错误访问错误任何人都可以将此问题排序吗?

2 个答案:

答案 0 :(得分:0)

这里[[secondViewController alloc ]init];您正在创建一个视图控制器的新实例,因此您可以在其上设置块,但随后它不会被使用并被销毁。您需要使用prepareForSegue或类似的,具体取决于您显示VC的方式,以便在正确的实例上设置块。

VC2通常应该在调用之前检查块是否为nil。

该属性也应该是强大的,而不是复制。无论如何ARC都做对了。

答案 1 :(得分:0)

我找到了传递数据的方法。

secondViewController *ref =[[secondViewController alloc ]init];
ref.myBlock =^void(NSString *data)
{
self.labelOffirstviewcontroller=data;
};

这个代码应该在我们推送viewcontroller

的地方给出