Tóm tắt câu hỏi của tôi: NSURLConnection có giữ lại người được ủy quyền không?NSURLConnection có giữ lại người được ủy quyền không?
câu hỏi chi tiết và kịch bản:
Tôi có một lớp tùy chỉnh, được gọi là JsonDownloader đó là mất trong một URL và trả về một NSDictionary của JSON rằng lợi nhuận URL.
Trên một ứng dụng iPhone, tôi làm một việc như thế này. (Phương pháp init đá ra khỏi toàn bộ quá trình)
- (void)viewDidLoad {
JsonDownloder *temp = [[[JsonDownloader alloc] initWithURL:urlString returnDataTo:self]];
[temp release];
[super viewDidLoad];
}
Khi JsonDownloader được thực hiện tải về và phân tích cú pháp, nó thực hiện một cuộc gọi lại cho returnDataTo: đối tượng, trong trường hợp này, đối tượng gọi điện thoại.
Điều này chỉ hoạt động tốt. Ngay cả khi tôi giới thiệu độ trễ 30 giây trong phản hồi máy chủ web của tôi, JsonDownloader vẫn tồn tại và thực hiện gọi lại chính xác.
Vì vậy, câu hỏi của tôi là: Điều gì đang giữ JsonDownloader cách qua cuối chu kỳ sự kiện? Tôi đang giải phóng nó một cách rõ ràng.
Linh cảm của tôi là NSURLConnection phải giữ lại trên đại biểu của mình, nhưng tôi không thấy bất kỳ điều gì trong tài liệu. Bất cứ ai có một ý tưởng?
Câu hỏi hay và câu trả lời hay. Tôi đã đấu tranh với điều này bản thân mình, nhưng tôi quyết định thêm [tự phát hành] ngay sau khi các đại biểu giao cho thậm chí ra số lượng giữ lại. Vì bản thân tôi là đại biểu trong lớp tôi, tôi thấy không có lý do gì để số lượng người được giữ lại của nó tăng lên. Nếu không đúng, ai đó cho tôi biết. – jocull
Tôi chỉ muốn thêm - cảm ơn bạn. Hướng dẫn sử dụng bị thiếu, một phần 327. Nó ăn xin niềm tin rằng thực tế quan trọng này không được đề cập trong tài liệu của Apple. Tôi nghĩ rằng nó đã được giữ lại nó nhưng không chắc chắn, các tài liệu nói gì về nó, và trong nhiều nếu không phải hầu hết các trường hợp đại biểu trong khuôn khổ Cocoa là * không * giữ lại. Đây là ngoại lệ. – n13