Làm theo hướng dẫn iOS 5 về khóa học Paul Hegarty, chúng ta sẽ thấy mã này trong một ứng dụng thể hiện việc sử dụng GCD. Rõ ràng GCD yêu cầu phát hành vì các vấn đề phải làm với đa luồng có phần không thể đoán trước trong những đối tượng nào vẫn còn cần thiết.Bạn có cần phát hành hàng đợi GCD trong ARC trong iOS 6.0 không?
dispatch_async(dowloadQueue, ^{
....
// do some stuff
....
});
dispatch_release(dowloadQueue);
tôi đã nâng cấp lên iOS 6 và XCode 4.5 và tôi nhận được một "ARC cấm phát hành rõ ràng ..." tin nhắn
Tôi không thử mã này dưới iOS5/XCode 4.2
Đây có phải chỉ vì ARC trở nên thông minh hơn và tôi không còn cần phải phát hành trong GCD nữa? Hay tôi chỉ hiểu lầm?
Bạn có cần __bridge_transfer vào Objective-C khi bạn tạo hàng đợi không? – openfrog
@openfrog - Không, nếu nó được coi là đối tượng Objective-C thì nó đã được xử lý bởi ARC nên không cần phải chuyển nó qua. –
@BradLarson Có cách nào để tắt tính năng này không? Hoặc, làm thế nào để tôi viết nó để nó biên dịch theo cả iOS 5 và iOS 6? – fishinear