2011-10-14 27 views
12

Tôi đang đánh giá công tắc sang ARC (đếm tham chiếu tự động) và phép tái cấu trúc để áp dụng cho mã của tôi. Trong số những điều tôi phải tìm ra, có điều này:DidReceiveMemory của UIViewController trong môi trường ARC

tôi nên làm gì trong didReceiveMemoryWarning nếu ARC không cho phép tiết lộ các đối tượng rõ ràng? Hiện nay, tôi sử dụng phương pháp đó để giải phóng đối tượng thuộc điều khiển của tôi và đó là một cách dễ dàng có thể phục hồi thông qua thu khí lười biếng:

- (void)didReceiveMemoryWarning { 
    [_foo release]; _foo = nil; 
    [super didReceiveMemoryWarning]; 
} 

và getter lười biếng tương đối:

- (Foo *)foo { 
    if (_foo) { 
     return _foo; 
    } 
    return (_foo = [[Foo alloc] init]); 
} 

Nó dường như không thể thực hiện như vậy " mẫu "trong ARC ... vậy, tôi nên làm gì đây? Nên didReceiveMemoryWarning được coi là "không được chấp nhận"/vô dụng trong ARC?

Trả lời

20

ARC xử lý mã lưu giữ và giải phóng để thiết lập _foo thành không đủ để cho phép mã được tạo ra ARC thực hiện bản phát hành. Bạn không phát hành rõ ràng, bạn chỉ cần quản lý biểu đồ đối tượng của mình và mã được tạo ARC sẽ thực hiện việc phát hành khi thích hợp.

Đọc tài liệu của Apple Transitioning To ARC Release Notes để biết thêm thông tin.

0

Bạn có thể thực hiện một số việc, nhưng tất cả đều dành riêng cho ứng dụng. Những thứ như xóa các mảng và từ điển và đặt tham chiếu đối tượng thành nil (cách xóa đối tượng của ARC).

Các vấn đề liên quan