Tôi hiểu rằng bạn cần phải cẩn thận với autorelease
trên iOS. Tôi có một phương thức trả về một đối tượng là alloc
s mà người gọi cần, vì vậy trong tình huống này - như tôi đã hiểu - tôi cần gửi autorelease
cho đối tượng trong callee trước khi nó trả về.Khi nào autorelease thực sự gây ra một bản phát hành trong Cocoa Touch?
Điều này là tốt, nhưng khi điều khiển trở lại điện thoại (tức là sau khi lần nhấp nút của tôi đã được xử lý) có vẻ như là nhóm tự động phát hành được giải phóng. Tôi nghi ngờ đây là cách nó được cho là, nhưng tôi tự hỏi thực hành tốt nhất cho tình huống này là gì.
Tôi đã sử dụng để gửi tin nhắn retain
từ người gọi để đối tượng không được nhả và sau đó phát hành rõ ràng trong dealloc
.
Đây có phải là cách tiếp cận tốt nhất không?
Nói đúng ra, thậm chí là không được bảo đảm, vì bạn có thể tạo ra một hồ bơi trong một phương pháp, autorelease một số đối tượng, và lấy nước từ các hồ bơi trong phương pháp khác. Một thiết kế không rõ ràng, nhưng hợp lệ: Các đối tượng sẽ kéo dài tất cả các cách từ việc tạo ra hồ bơi đến hệ thống thoát nước của hồ bơi, bất kể phương thức tạo hồ bơi trở lại. –