【发布时间】:2011-02-13 10:56:19
【问题描述】:
当我通过 GCD 掌握多线程技术时,我遇到了一些问题。假设你有以下方法:
- (void)method {
NSString *string= [NSString string]; //will be autoreleased
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//very very lengthy operation...
NSLog(@"%@", string); //is it safe?
});
}
我想知道这是否正确,因为我认为我应该在块执行之前保留字符串:实际上我担心事件循环完成并在块中使用 string 之前发送 string 自动释放消息.这会使程序崩溃。
我说的对吗?我应该向string 发送保留和释放消息还是这是正确的实现?
提前致谢!
【问题讨论】:
-
@yes123 你没有给出论据,扩展你的观点。
-
@yes123: 任何想要完成某事的人,任何想要完成某事的人 =)
标签: objective-c multithreading cocoa memory-management grand-central-dispatch