Jon*_*an. 4 iphone memory-management objective-c objective-c-blocks
在这个答案中:我可以使用Objective-C将块作为@selector传递吗?
Lemnar说你可以这样做:
id block = [^{NSLog(@"Hello, world");} copy];// Don't forget to -release.
[button addTarget:block
action:@selector(invoke)
forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)
究竟应该在哪里发布?在我想使用它的地方,是在viewDidLoad方法中,所以viewDidUnload似乎是释放它的地方,但有没有办法在不创建ivar的情况下释放它?
那是不支持的; 该invoke方法不公开,并且不打算直接在这样的角色中使用块.
提交增强请求,并作为解决方法,使用objc_implementationWithBlock()和(IIRC)class_addMethod()创建一个可用于目标操作的块方法.
| 归档时间: |
|
| 查看次数: |
555 次 |
| 最近记录: |