2016-09-22 63 views
0

我一直在尝试使用块数据传递回用块而不是委托

数据

secondViewController .h文件中

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

呼叫发送的数据落后

声明块传递块无论你需要从.m文件传递数据secondViewController

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

3.进口在firstViewController .m文件.h文件中上方,并定义块作为

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

同时运行时我得到EXC坏访问错误谁能排序的问题呢?

+0

你在错误的方式定义关闭。我们没有定义关闭属性 – Wolverine

+0

然后你可以解释如何定义它? @Wolverine –

+0

typealias ClosureType =(ParameterTypes) - >(ReturnType) – Wolverine

回答

0

这里[[secondViewController alloc ]init];你正在创建一个视图控制器的新实例,所以你可以设置它的块,但它不会被使用和被破坏。您需要使用prepareForSegue或类似,具体取决于您如何显示VC,以便将块设置为正确的实例。

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

该属性也应该强大,而不是复制。无论如何,ARC做正确的事情。

0

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

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

应该给这个代码,我们推的ViewController