I have been trying to pass data using blocks
sent data backward
declare block in your secondViewController .h file
@property (nonatomic, copy)void(^myBlock)(NSString *);
myBlock(@"this will displayed in firstViewController");
secondViewController *ref =[[secondViewController alloc ]init];
ref.myBlock =^void(NSString *data)
[[secondViewController alloc ]init]; you are creating a new instance of the view controller so you can set the block on it, but then it isn't used and gets destroyed. You need to use
prepareForSegue or similar depending on how you display the VC so you set the block on the correct instance.
VC2 should generally check if the block is nil before calling it too.
The property should also be strong, not copy. ARC does the right thing anyway.