Tôi muốn có một cách nhanh chóng và dễ dàng để lấy dữ liệu từ URL
mà không cần phải gây rối với delegates
.GCD dispatch_async và NSURLConnection
Có vấn đề gì sau đây không?
// 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
Tôi nghĩ tôi đã đọc ở đâu đó từ lâu rằng việc sử dụng phương pháp đồng bộ NSURLConnection
trong chủ đề nền sẽ gây rò rỉ bộ nhớ. Điều này có đúng không?
Có vấn đề gì với các mã được đăng ở đó không? Bất kỳ vấn đề nào với việc gán dữ liệu cho self.data
trong khối?
Tôi nhận ra điều đó và đã thử nghiệm một số triển khai với nó. Nhưng, nó vẫn còn hạn chế cho những gì tôi cần làm. Phương pháp tôi hiển thị ở trên là rất tốt và dễ dàng để có được 'NSData', tất cả các phương thức async khác dường như là một quá trình 2 bước với các đại biểu. Vì vậy, vẫn còn thắc mắc về câu hỏi ban đầu của tôi. –
@Nic: đã cập nhật câu trả lời của tôi – JeremyP
Cảm ơn bạn, vì vậy bạn nghĩ sẽ an toàn để thực hiện theo cách này, miễn là tôi thêm hồ bơi tự động phát hành của riêng mình? –