Nic*_*ard 5 cocoa-touch objective-c nsurlconnection grand-central-dispatch ios
我想要一种快速简便的方法来获取数据,URL而不必惹麻烦delegates.
以下是否有任何问题?
// Use gcd
dispatch_queue_t queue = dispatch_queue_create("com.dowork", 0);
dispatch_queue_t main = dispatch_get_main_queue();
// do the long running work in bg async queue
// within that, call to update UI on main thread.
dispatch_async(queue, ^{
// Do work in the background
NSData *response = [NSURLConnection sendSynchronousRequest:serviceRequest returningResponse:&serviceResponse error:&serviceError];
dispatch_async(main, ^{
// Update UI
self.data = response;
[self.tableView reloadData];
});//end
});//end
Run Code Online (Sandbox Code Playgroud)
我以为我很久以前在某处读过,NSURLConnection在后台线程中使用同步方法会导致内存泄漏.这是真的?
在那里发布的代码是否有任何问题?将数据分配到self.data块内的任何问题?
如果您的目标是 ios5 及更高版本,则可以使用 NSURLConnection 的sendAsynchronousRequest:queue:completionHandler:
为了回答你的具体问题,在我看来response可能会泄漏:我不知道 GCD 线程上是否有隐式自动释放池。
现在做了一些研究:GCD线程有自己的自动释放池,但你不知道它们什么时候会被耗尽。您可能希望使用显式自动释放池将前两个语句括起来。
另请参阅是否需要在 GCD 的块内创建 NSAutoreleasePool?
| 归档时间: |
|
| 查看次数: |
3574 次 |
| 最近记录: |