Tôi đã xem đoạn mã này và tôi không thể hiểu tại sao tác giả đã làm điều này. Hãy xem mã này:Có phải dispatch_async (dispatch_get_main_queue(), ...) cần thiết trong trường hợp này không?
someMethodStandardMethodUsingABlock:^() {
dispatch_async(dispatch_get_main_queue(), ^{
[[NSNotificationCenter defaultCenter] postNotificationName:"notif" object:nil];
});
}];
Tôi có phương thức có khối hoàn thành và trong thông báo chặn này phải được đăng. Tôi không hiểu lý do tại sao các dispatch_async
trên hàng đợi chính là cần thiết trong trường hợp này. Khối sẽ được chạy trên chủ đề chính, và thậm chí nếu nó không phải là tôi không nghĩ rằng nó sẽ thực sự quan trọng phải không? Tôi chỉ đơn giản là đã viết điều này:
someMethodStandardMethodUsingABlock:^() {
[[NSNotificationCenter defaultCenter] postNotificationName:"notif" object:nil];
}];
Và nó hoạt động trong thử nghiệm của tôi.
Nếu bạn có thể giúp tôi làm sáng tỏ điều này, tôi thực sự đánh giá cao điều đó!
Matt
Cảm ơn David, b dường như phù hợp với trường hợp của tôi. Các tài liệu dường như không chỉ định, nhưng có vấn đề gì nếu thông báo được gửi trên một luồng khác mà một người quan sát đã đăng ký? Điều này có nghĩa là người quan sát vẫn đang truy cập – MGA
Có, người quan sát sẽ vẫn nhận được thông báo ngay cả khi thông báo được gửi trên một chủ đề khác. –