在这个答案中:Can I pass a block as a @selector with Objective-C?
Lemnar 说你可以这样做:
id block = [^{NSLog(@"Hello, world");} copy];// Don't forget to -release.
[button addTarget:block
action:@selector(invoke)
forControlEvents:UIControlEventTouchUpInside];
具体应该在哪里发布?我想在 viewDidLoad 方法中使用它的地方,所以 viewDidUnload 似乎是释放它的地方,但是有没有办法在不创建 ivar 的情况下释放它?
最佳答案
不支持; invoke
方法不是公开的,Blocks 不打算直接用于这样的角色。
提交增强请求,作为解决方法,使用 objc_implementationWithBlock()
和 (IIRC) class_addMethod()
创建一个 block 即方法,将在目标行动。
关于iphone - 在 Objective-C 中使用 block 作为 TargetAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7893804/