My iPhone khách hàng có rất nhiều sự tham gia của các yêu cầu không đồng bộ, rất nhiều thời gian liên tục điều chỉnh bộ sưu tập tĩnh của từ điển hoặc mảng. Kết quả là, nó phổ biến cho tôi để xem cấu trúc dữ liệu lớn mà mất nhiều thời gian để lấy từ một máy chủ với các lỗi sau đây:iPhone sử dụng mutexes với URL không đồng bộ yêu cầu
*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <NSCFArray: 0x3777c0> was mutated while being enumerated.'
này thường có nghĩa là hai yêu cầu đến máy chủ trở lại với dữ liệu đó đang cố gắng sửa đổi cùng một bộ sưu tập. Những gì tôi đang tìm kiếm là một hướng dẫn/ví dụ/sự hiểu biết về cách cấu trúc đúng mã của tôi để tránh lỗi bất lợi này. Tôi tin rằng câu trả lời đúng là mutexes, nhưng tôi chưa bao giờ cá nhân sử dụng chúng được nêu ra.
Đây là kết quả của việc yêu cầu HTTP đồng bộ với NSURLConnection và sau đó sử dụng NSNotification Trung tâm như một phương tiện của đoàn lần yêu cầu được hoàn thành. Khi kích hoạt các yêu cầu làm biến đổi cùng một tập hợp bộ sưu tập, chúng tôi sẽ nhận được các xung đột này.
Vấn đề là, chủ đề 'nền' không được tạo ra rõ ràng bởi tôi. Đó là kết quả của các yêu cầu NSURLConnection không đồng bộ. Tôi không có cách nào để nói chuyện với chủ đề chính thông qua mã. Đề xuất khác của bạn là hữu ích mặc dù và tôi đánh giá cao nó. – Coocoo4Cocoa
Tôi tin rằng đại biểu cho NSURLConnection sẽ được gọi trên luồng bắt đầu quá trình tải, không nhất thiết là chuỗi tạo đối tượng. Vì vậy, bạn có thể kết hợp dữ liệu trong các phương thức đại biểu của mình. – sbooth
Có! cảm ơn nó làm việc cho tôi. – Armanoide