1

我已经为此苦苦挣扎了一段时间,但似乎找不到我想要的东西。基本上我在 A 类中有以下方法声明。

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

在 B 类中,当我在块部分调用此方法时,如下所示:

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

等等

我的问题是,在我的实现中,我doSomethingCoolWithThisBlock如何剖析块内的内容并例如说 UILabel ?

4

1 回答 1

3

简短的回答是你不能;如果你想将 an 传递UILabel给方法,它应该接受一个类型的参数UILabel *(以及你想作为单独参数传递的任何其他东西,或者某种容器类型的一个参数 - 可能是你自己的自定义协议 - 包含所有事物)。

但是如果你只想从块中传递一个东西,你当然可以让块返回一些东西(例如,将类型更改为(UILabel *)(^)(void)然后在块的末尾 do return myLabel;)。一个更复杂的方法是让块作为参数指针指向指针(例如,UILabel **),然后从块内分配给那些,但看起来这没有多大意义。

于 2012-11-26T02:28:06.020 回答