Releasing phương tiện bạn phát hành đó ngay lập tức. Tự động phát hành có nghĩa là bạn muốn biến được phát hành trên nhóm tự động phát hành tiếp theo.
Bạn sử dụng tự động phát hành khi bạn muốn giữ lại biến nhưng không muốn tạo rò rỉ bộ nhớ. Bạn sử dụng bản phát hành khi bạn không cần biến nữa.
mẫu:
- (NSNumber *)return5 {
NSNumber * result = [[NSNumber alloc]initWitnInt: 5];
[result autorelease];
return result;
}
Tại sao chúng ta sử dụng autorelease đó?
Nếu chúng tôi sử dụng [phát hành kết quả] thay vào đó, kết quả biến sẽ bị hủy tại thời điểm đó. Điều đó có nghĩa là giá trị trả về sẽ là rác.
Nếu chúng tôi không giải phóng chút nào, biến số result
sẽ bị giữ TRỪ KHI phát hiện rò rỉ bộ nhớ.
Chúng tôi có thể thông báo cho mọi người gọi đến hàm để giải phóng kết quả nhưng điều đó sẽ là một cơn đau đầu và dễ bị lỗi.
Vì vậy, chúng tôi sử dụng tự động phát hành. Chúng tôi đánh dấu biến được phát hành trên nhóm tự động phát hành tiếp theo. Về cơ bản chúng tôi đánh dấu các biến được phát hành gần phân bổ. Do đó việc phân bổ thần chú được ghép nối với bản phát hành trong cùng một hàm giữ tất cả thời gian.
Thực ra, bạn sẽ làm tốt việc thay đổi tất cả bản phát hành thành tự động phát hành. Việc sử dụng bộ nhớ của bạn sẽ không hiệu quả, tuy nhiên, hiệu quả là tối thiểu. Tất cả các biến, trong tất cả các ngôn ngữ lập trình được tự động phát triển hiệu quả.
Dù sao, hãy sử dụng ARC.
Nguồn
2012-09-21 03:47:54
liên kết đến hướng dẫn lập trình quản lý bộ nhớ dường như bị hỏng; phiên bản iOS có thể được tìm thấy tại https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/MemoryMgmt.html – CCJ