tham khảo:IOS - performSelector: withObject: afterDelay: KHÔNG LÀM VIỆC
https://stackoverflow.com/a/14741253/1749293
Giống như liên kết ở trên đã nói, nhưng có vẻ như nó không giải thích lý do.
Trong mã của tôi, sau đây sẽ làm việc:
dispatch_async(dispatch_get_main_queue(), ^{
[self performSelector: @selector(helloWorld) withObject:nil afterDelay:0.5];
});
nhưng, khi tôi bình luận một cái gì đó như thế này, (và tôi thực sự chắc chắn rằng tôi chạy nó trong các chủ đề chính !!) mã không công việc:
// dispatch_async(dispatch_get_main_queue(), ^{
[self performSelector: @selector(helloWorld) withObject:nil afterDelay: 0.5];
// });
Ai đó có thể cho tôi biết lý do không? VÀ 'tự', sẽ nerver phát hành/deallocated, tôi giữ nó cho đến khi ứng dụng kết thúc.
"không làm việc", có nghĩa là, (không sụp đổ) nó không nhảy vào phương pháp "HelloWorld":
-(void) helloWorld {
NSLog(@"hello world"); // I set a break point here for debug , it wouldn't pause forever
}
Tôi nghĩ là Run Vòng nguyên nhân vấn đề này. Giống như this link đã nói, nhưng tôi cần thêm chi tiết hoặc giải thích rõ ràng hơn.
Điều đó thật kỳ quặc nếu bạn thực sự là chủ đề chính. Bất kỳ lý do cụ thể nào khiến bạn không sử dụng 'dispatch_after()'? –
BROKER.actors.event là gì? – manujmv
Trong mã đầu tiên của bạn, bạn đang sử dụng 'self' trong khi trong seconde bạn đang sử dụng' BROKER.actors.event'. Vì vậy, bạn có chắc chắn họ đang đề cập đến cùng một điều? – sunkehappy