ARC sẽ giúp bạn loại bỏ một số loại rò rỉ nhất định, vì bạn sẽ không quên release
hoặc autorelease
các đối tượng duy nhất. Ví dụ: loại lỗi này trở thành không thể:
myLabel.text = [[NSString alloc] initWithFormat:@"%d", 17];
// oops, just leaked that NSString!
Tuy nhiên, ARC sẽ không loại bỏ rò rỉ do chu kỳ lưu giữ. Nó vẫn tùy thuộc vào bạn để loại bỏ các chu kỳ giữ lại, hoặc bằng cách sử dụng các tham chiếu yếu hoặc bằng cách phá vỡ các chu kỳ trước khi chúng bị rò rỉ. Ví dụ, khi chúng ta bắt đầu sử dụng khối nhiều hơn, khối/tự giữ lại chu kỳ trở nên phổ biến hơn nhiều. Các Transitioning to ARC Release Notes thảo luận làm thế nào để tránh những chu kỳ sử dụng tài liệu tham khảo yếu.
Nguồn
2012-01-21 06:04:25
Không, ARC sẽ không xóa hoàn toàn rò rỉ bộ nhớ. Xem [Loại rò rỉ nào tính toán tham chiếu tự động của Objective-C (trong Xcode 4.2) không ngăn ngừa/giảm thiểu?] (Http://stackoverflow.com/questions/6260256/what-kind-of-leaks-does-objective-cs -automatic-reference-counting-in-xcode-4-2) – BoltClock