Tôi cần một cách tiết kiệm để nói: "iOS, tôi muốn phương pháp này được thực thi a.s.a.p., nhưng KHÔNG trong vòng lặp chạy vòng lặp này. Vào thời điểm sớm nhất trong lần tiếp theo, nhưng vui lòng không ở trong phần này. Cảm ơn bạn."Cách gọi phương thức a.s.a.p. nhưng sớm nhất trong vòng lặp chạy tiếp theo?
Ngay bây giờ tôi luôn luôn làm việc đó như thế này:
[self performSelector:@selector(doSomethingInNextRunLoop) withObject:nil afterDelay:0];
[self doSomeOtherThings];
Với giả định rằng -doSomeOtherThings
sẽ luôn luôn được thực hiện TRƯỚC -doSomethingInNextRunLoop
.
Các tài liệu nói:
Xác định một sự chậm trễ từ 0 không nhất thiết gây ra selector là thực hiện ngay lập tức. Công cụ chọn vẫn được xếp hàng đợi trên vòng lặp hoạt động của luồng và được thực hiện càng sớm càng tốt.
Vì vậy, về cơ bản nó có thể xảy ra rằng phương pháp này được gọi ngay lập tức như thể tôi vừa gửi một thông điệp trực tiếp, gây -doSomethingInNextRunLoop
được thực hiện trước khi -doSomeOtherThings
?
Làm cách nào để đảm bảo chắc chắn nó sẽ được gọi là a.s.a.p. nhưng KHÔNG BAO GIỜ bao giờ trong cùng vòng lặp chạy lặp lại này?
Để làm rõ từ ngữ: Với vòng lặp chạy, tôi có nghĩa là chuỗi chính và lặp lại trong đó tất cả các phương thức đều phải trả lại cho đến khi luồng lại sẵn sàng cho các sự kiện mới.
Thật tuyệt vời! Một loại để giảm bớt điều này sẽ có ý nghĩa. – openfrog