当我通过 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
还是这是正确的实现?提前致谢!