2011-08-23 29 views
5

Có cách nào có thể để tạo hai hoặc nhiều vòng lặp chạy trong một luồng không? Hoặc một sợi chỉ có thể có một vòng lặp chạy?Bạn có thể có nhiều hơn một runloop cho mỗi luồng trên iOS không?

Đối tác của tôi cho tôi biết, một chuỗi có thể có hai hoặc nhiều vòng lặp chạy bên trong. Và tôi nghi ngờ điều đó. Tôi đã googled nhưng không tìm thấy gì cả. Vì vậy, có thể có hai hoặc nhiều vòng lặp chạy trong một thread?

+4

Có thể bạn nên giải thích lý do tại sao bạn muốn đạt được điều này ... – Macmade

+0

Tôi nghi ngờ đối tác của tôi đã nói gì. Tôi nghĩ rằng không thể có nhiều runloop trong một chủ đề. Tôi nhớ một sợi chỉ có một vòng lặp chạy khi tôi đọc tài liệu chính thức của Apple. – AechoLiu

Trả lời

6

Từ Apple documentation on NSRunLoop:

ứng dụng của bạn không thể hoặc tạo hoặc quản lý một cách rõ ràng NSRunLoop đối tượng. Mỗi đối tượng NSThread, bao gồm chủ đề chính của ứng dụng , có đối tượng NSRunLoop được tự động tạo cho nó là cần thiết.

Ngoài ra, tôi không thấy lý do nào bạn muốn tạo nhiều hơn một chuỗi trên mỗi chuỗi.

+0

Có thể một luồng có nhiều vòng chạy không? Tài liệu này không xác định điều đó. Nó nói rằng chúng ta không thể tạo hoặc quản lý các đối tượng runloop, nhưng có khả năng là iOS sử dụng nhiều hơn một vòng lặp chạy trong một luồng không? – AechoLiu

+2

@Toro - Bạn không thể tự tạo vòng chạy cho các chuỗi và chỉ có một vòng lặp do hệ thống trả về cho bất kỳ chuỗi nhất định nào, vì vậy sẽ chỉ ra rằng chỉ có một vòng lặp chạy cho bất kỳ chuỗi nào. Ngoài một cuộc thảo luận hoàn toàn lý thuyết, tôi thậm chí không thấy làm thế nào nó sẽ có ý nghĩa để có nhiều hơn một vòng lặp chạy cho mỗi chủ đề. –

+0

Cảm ơn bạn rất nhiều. Tôi hỏi câu hỏi này bởi vì tôi bối rối về những gì đối tác của tôi đã nói. – AechoLiu

0

Tôi muốn thêm trích dẫn này từ CFRunLoop Reference tài liệu

Có chính xác một lần chạy vòng lặp cho mỗi thread. Bạn không tạo cũng không phá hủy vòng lặp chạy của luồng. Core Foundation tự động tạo ra nó cho bạn khi cần thiết.

+0

Cảm ơn bạn đã trả lời. Tôi chỉ muốn chắc chắn một cái gì đó vào thời điểm đó. Và tôi chắc chắn rằng một sợi chỉ có một runloop. Dù sao cũng cảm ơn bạn. – AechoLiu

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