Nếu tôi quyết định nâng cấp lên iOS 5, tôi có cần xóa tất cả các câu lệnh [myObject giữ lại] và [phát hành myObject] khỏi mã của tôi không?
Có, nhưng XCode 4.2 bao gồm một công cụ "Di chuyển đến Objective-C ARC" mới (trong menu Edit-> Refactor), công cụ này phù hợp với bạn. Gọi dealloc là một câu chuyện khác. Như đã đề cập trong các bình luận, tham chiếu clang nói rằng bạn nên giữ phương thức dealloc của mình:
Đặt vấn đề: mặc dù ARC tự động phá hủy các biến thể hiện, nhưng vẫn có những lý do chính đáng để viết phương thức dealloc, chẳng hạn như giải phóng các tài nguyên không thể giữ lại. Không gọi [super dealloc] theo phương thức như vậy gần như luôn luôn là một lỗi.
Bạn kích hoạt ARC bằng cờ trình biên dịch -fobjc-arc mới. ARC được hỗ trợ trong Xcode 4.2 cho Mac OS X v10.6 và v10.7 (ứng dụng 64 bit) và cho iOS 4 và iOS 5. (Tham chiếu yếu không được hỗ trợ trong Mac OS X v10.6 và iOS 4). Không có hỗ trợ ARC trong Xcode 4.1.
-
Nếu tôi phát triển một ứng dụng mới cho iOS 5 bằng ARC, tôi có cần thực hiện một số loại kiểm tra "tương thích retro" không? Tức là: tôi có cần kiểm tra phiên bản iOS và gọi giữ lại và phát hành cho phù hợp không? Vì vậy, về cơ bản, ARC có sẵn cho tất cả các phiên bản iOS hay chỉ dành cho iOS 5?
Không, bởi vì ARC thực hiện phép thuật của mình về thời gian biên dịch và không phải thời gian chạy.
Thay vì bạn phải nhớ khi nào nên sử dụng giữ lại, phát hành và tự động thoát, ARC đánh giá các yêu cầu trọn đời của các đối tượng của bạn và tự động chèn các lệnh gọi phương thức thích hợp cho bạn trong thời gian biên dịch. Trình biên dịch cũng tạo ra các phương thức dealloc thích hợp cho bạn.
Thông tin thêm về ARC: http://clang.llvm.org/docs/AutomaticReferenceCounting.html