的iOS - 从作为参数传递的块内获得一个可变(iOS - Getting a variable

2019-10-17 10:04发布

我一直在敲打我的脑袋上这一段时间了,但也似乎无法找到什么,我一直在寻找。 基本上我有在A级以下的方法声明

- (void)doSomethingCoolWithThisBlock:(void (^)(void))block 

在B类,当我把这个方法有点像块中的部分如下:

UILabel *myLabel = [[UILabel alloc] init];
UITextField *myField = [[UITextField alloc] init];

等等

我的问题是,在我的执行doSomethingCoolWithThisBlock我怎么能剖析什么是块内并得到说的UILabel例如?

Answer 1:

简短的回答是,你不能; 如果你想要一个传递UILabel的方法,应该采取类型的参数UILabel * (你想传递作为独立参数,其它任何东西,或某种容器中的一个参数类型,可能是自己的自定义协议-中包含所有的东西)。

但是,如果你只是想从块内通过一件事,你当然可以使座返回的东西(例如,更改类型(UILabel *)(^)(void) ,然后在该块结束做return myLabel; )。 更令人费解的方式是使块取作为参数指针的指针(例如, UILabel ** ),然后从块到那些内分配,但它看起来并不像这将太大的意义。



文章来源: iOS - Getting a variable from inside a block passed as a parameter