【发布时间】:2011-09-01 00:24:18
【问题描述】:
这可能是关于内存管理的新手问题。
在目标 c 中使用块作为回调时如何释放对象?
(更新代码)
@implementation ObjectWithCallback
- (void)dealloc {
[_completionHandler release];
[super dealloc];
}
- (void)doTaskWithCompletionHandler:(void(^)(void))handler {
_completionHandler = [handler copy];
// Start tasks...
}
- (void)tasksDone {
// Do callback block
_completionHandler();
// Delete reference to block
[_completionHandler release];
_completionHandler = nil;
}
// Use of the ObjectWithCallback
ObjectWithCallback *request = [[ObjectWithCallback alloc] init];
[request doTaskWithCompletionHandler:^(void){
// Callback called and task is ready.
}];
【问题讨论】:
-
你要释放什么对象,为什么不能在块内释放?
-
是什么让你觉得你无法释放块中的对象?
-
他要释放
request。
标签: iphone objective-c memory-leaks callback objective-c-blocks