Tôi đang cố gắng học đếm số tham chiếu tự động trong iOS 5. Bây giờ phần đầu tiên của câu hỏi này sẽ dễ dàng:
Có đúng không khi tôi KHÔNG cần phải viết các tuyên bố thuộc tính phát hành rõ ràng trong dealloc của mình khi sử dụng ARC? Nói cách khác, có đúng là sau đây KHÔNG cần một thỏa thuận rõ ràng?
@interface MyClass : NSObject @property (strong, nonatomic) NSObject* myProperty; @end @implementation MyClass @synthesize myProperty; @end
Câu hỏi tiếp theo và quan trọng hơn của tôi đến từ một dòng trong tài liệu Ghi chú chuyển đổi sang ARC :
Bạn không phải (thực sự không thể) phát hành các biến thể hiện, nhưng bạn có thể cần phải gọi [self setDelegate: nil] trên các lớp hệ thống và mã khác không được biên dịch bằng ARC.
Điều này đặt ra câu hỏi: làm thế nào để tôi biết các lớp hệ thống nào không được biên dịch với ARC? Khi nào tôi nên tạo dealloc của riêng mình và thiết lập rõ ràng các thuộc tính giữ lại thành không? Tôi có nên giả sử tất cả các lớp khung NS và UI được sử dụng trong các thuộc tính yêu cầu deallocs rõ ràng không?
Có rất nhiều thông tin về SO và các nơi khác về các phương thức giải phóng ngà sao lưu tài sản khi sử dụng theo dõi tham chiếu thủ công, nhưng tương đối ít về điều này khi sử dụng ARC.
MyController : UIViewController
lớp tạo và sở hữu một UIView và cũng đặt đại biểu của khung nhìn cho chính nó. Nó là chủ sở hữu duy nhất của quan điểm đó. Khi bộ điều khiển được dealloc'ed, thì khung nhìn cũng sẽ được dealloc'ed. Liệu nó có quan trọng nếu con trỏ đại biểu đang treo lủng lẳng?