Hoạt ảnh chính sử dụng chuỗi nền để thực hiện công việc. Bây giờ vấn đề là điều này: Tôi có một tính toán nặng đang diễn ra trong chủ đề chính. Core Animation ngay lập tức đóng băng cho đến khi tính toán được thực hiện. Và sau đó nó tiếp tục hoàn thành hình ảnh động của nó. Tôi nhớ đọc trong một tài liệu mà CA có ưu tiên thấp trong thời gian xử lý, có nghĩa là bất kỳ chủ đề chính nào muốn làm là prio cao và sẽ được thực hiện nhiều khả năng hơn bất kỳ hoạt ảnh ưa thích nào cùng một lúc.Có cách nào để buộc Core Animation chạy chuỗi đó không?
Tôi muốn ép Lõi hoạt ảnh để lên lịch chuỗi nền của nó độc đáo với chuỗi chính trong mọi trường hợp. Hoặc cách khác là một luồng riêng biệt sẽ chạy phép tính nặng bên ngoài luồng chính. Tôi đã thử điều đó rồi, nhưng CA vẫn đóng băng cho đến khi xong. Tôi hy vọng bộ lập lịch để chuyển đổi thời gian xử lý nhanh chóng giữa CA và tính toán đó.
CA có thể bị buộc phải tiếp tục làm việc như thế nào? Nếu mọi thứ diễn ra chậm hơn một chút thì tốt thôi. Nhưng điều quan trọng nhất là tất cả mọi thứ tiếp tục đi từ quan điểm của người dùng.
Cảm ơn. NSOperations có khả năng tạo thời gian chờ không? Tính toán của tôi đã được chia nhỏ thành từng mảnh. Mỗi cái được lên lịch với độ trễ là 0,05 giây. Vì vậy, thực sự có một số thời gian rảnh rỗi inbetween. Tuy nhiên, khi CA phải thực hiện precalclations ngay từ đầu, ý tưởng của bạn về việc chờ đợi -animationDidStart là goog. Tôi đã thử nó bằng cách trì hoãn cuộc gọi để bắt đầu với khối tính toán đầu tiên trong 1 giây. CA bắt đầu hoạt hình, sau đó các calclations nặng đi vào vị trí, và CA đóng băng. Nó không giúp được gì. Tôi đang chạy các tính toán trong một chủ đề mới. –
Vấn đề là sau khi tính toán từng khối dữ liệu, có một cập nhật trong giao diện người dùng đang diễn ra. Những cập nhật này nhanh và mượt mà như mong đợi. Nó sẽ là hoàn hảo khi có một cách để sắp xếp tất cả điều này theo cách mà CA chia sẻ thời gian CPU với điều này ... sẽ có một cái nhìn tại những thứ NSOperationQueue, mặc dù họ không có vẻ như họ sẽ cung cấp timeouts như bị trì hoãn thực hiệnCác cuộc gọi gọi đến (?) –
NSOperationQueue tạo chủ đề cho NSOperations của bạn, nếu cần.Đó là thông minh hợp lý về quản lý những nhiệm vụ được thực hiện khi, nhưng tôi không biết nếu nó có cùng một loại nhận thức cấp hệ thống trên iPhone mà nó làm trên Snow Leopard (nơi nó được phủ lên trên đầu của GCD). Nó cũng hỗ trợ các phụ thuộc giữa các tác vụ, mà bạn có thể sử dụng để lợi thế của bạn ở đây. –