2011-12-17 33 views
6

Tôi có bộ hẹn giờ lặp lại với khoảng thời gian là 1/4 giây. Tôi đang khởi tạo nó như sau:NSTimer có phải là chủ đề an toàn không?

[NSTimer scheduledTimerWithTimeInterval:0.25 
           target:self 
           selector:@selector(toggleCams) 
           userInfo:nil 
           repeats:YES]; 

Điều này có xảy ra đồng bộ không? Nói cách khác, tôi có đảm bảo rằng một phương thức khác trong cùng một lớp sẽ không được gọi cùng lúc với toggleCams được gọi không?

Trả lời

18

NSTimers thực sự chỉ định kỳ kích hoạt các sự kiện vào NSRunLoop kèm theo, mà mỗi luồng có (hoặc phải có). Vì vậy, nếu bạn có một tiến trình con (hoặc nền) chạy trong một luồng khác, NSTimers sẽ kích hoạt NSRunLoop của luồng đó thay vì NSRunLoop chính của ứng dụng.

+0

ah, tôi hiểu. cảm ơn! – 0xSina

+0

Câu trả lời rất rõ ràng và dễ hiểu! Xuất sắc –

Các vấn đề liên quan