iOS – 从作为parameter passing的块中获取variables
我已经有一段时间对此感到震惊,但似乎无法find我正在寻找的东西。 基本上我在A类中有下面的方法声明
- (void)doSomethingCoolWithThisBlock:(void (^)(void))block
在B类中,当我在块部分调用这个方法如下:
UILabel *myLabel = [[UILabel alloc] init]; UITextField *myField = [[UITextField alloc] init];
等等
我的问题是,在我的doSomethingCoolWithThisBlock
的实现中,我怎么能剖析块内的东西,并得到说UILabel例如?
简单的答案是你不能; 如果你想传递一个UILabel
到方法,它应该带一个types为UILabel *
的参数(以及任何你想作为单独parameter passing的东西,或者某种容器types的一个参数 – 可能是你自己定制的协议 -包含所有的东西)。
但是如果你只想从块内传递一个东西,你当然可以让块返回一些东西(例如,把types改成(UILabel *)(^)(void)
,然后在块的末尾return myLabel;
)。 更复杂的方法是将块作为参数指向指针的指针(例如, UILabel **
),然后从块内指派给这些指针,但是看起来这不会有多大意义。