Trả lời

7

Nó có thể sẽ sụp đổ khi đối tượng bình thường được tự động phát hành. autorelease có nghĩa là "phát hành chậm", vì vậy nó sẽ được phát hành: chỉ sau này. Kể từ khi đối tượng sẽ không tồn tại sau này khi bạn đang tự phát hành nó, bạn sẽ có khả năng sụp đổ do thời gian chạy gửi tin nhắn -release cho đối tượng hiện đang được deallocated của bạn.

Chỉnh sửa: Lưu ý rằng nếu bạn -retain đối tượng được tự động phát hành, bạn phải -release chúng: bạn đang sở hữu.

+1

Hãy nói rằng (vì bất kỳ lý do gì) tôi * muốn * muốn nó được phát hành ngay bây giờ. Là "[[obj giữ lại] phát hành]" một lựa chọn hợp lệ? – noamtm

+2

Không thực sự. Trong trường hợp đó, bạn nên quấn toàn bộ thứ trong @autoreleasepool {} để tạo và phá hủy hồ bơi tự động phát hiện đang xảy ra. –

+0

đồng ý, bao trùm toàn bộ nội dung trong @autoreleasepool –

1

Tôi nhận ra rằng điều này thật ngu ngốc và tôi không nên phát hành thứ gì đó mà tôi không sở hữu.

+0

Không ngu ngốc - Tôi thực sự muốn làm điều tương tự! – Brad

0

Nếu bạn không muốn đối tượng đi vào hồ bơi tự động giải phóng, bạn có thể thực hiện một hướng dẫn sử dụng allocinitWithCapabity. Nếu bạn làm điều đó, bạn sẽ phải theo cách thủ công release tại một thời điểm nào đó.

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