【问题标题】:iOS - Getting a variable from inside a block passed as a parameteriOS - 从作为参数传递的块中获取变量
【发布时间】:2012-11-26 02:22:14
【问题描述】:

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

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

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

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

等等

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

【问题讨论】:

    标签: objective-c ios cocoa-touch cocoa objective-c-blocks


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      • 2018-05-23
      相关资源
      最近更新 更多