gpt4 book ai didi

objective-c - iOS - 从作为参数传递的 block 内部获取变量

转载 作者:行者123 更新时间:2023-12-03 16:58:11 25 4
gpt4 key购买 nike

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

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

在B类中,当我在 block 部分调用此方法时,类似于以下内容:

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

等等

我的问题是,在我的 doSomethingCoolWithThisBlock 的实现中,我如何剖析 block 内的内容并获取 UILabel 等内容?

最佳答案

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

但是,如果您只想从 block 内传递一个东西,您当然可以使 block 返回一些东西(例如,将类型更改为(UILabel *)(^)( void),然后在 block 的末尾执行 return myLabel;)。一种更复杂的方法是让 block 将指向指针的指针(例如,UILabel **)作为参数,然后从 block 内分配给这些指针,但看起来这不会使很有道理。

关于objective-c - iOS - 从作为参数传递的 block 内部获取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13557831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com