Mã sau đây là từ mã mẫu LazyTableImages do Apple cung cấp (source here).Tự chụp trong khối (giữ lại chu kỳ), không phải lúc nào?
Trong khối hoàn thành, chúng có tham chiếu đến bản thân sẽ gây ra chu kỳ giữ lại ... Nhưng tôi không nhận được cảnh báo về điều này trong Xcode trong khi ở mã tương tự của tôi.
Điều này có đúng không?
Có lẽ tôi đang thiếu một sự tinh tế về điều này.
- (void)startIconDownload:(AppRecord *)appRecord forIndexPath:(NSIndexPath *)indexPath
{
IconDownloader *iconDownloader = [self.imageDownloadsInProgress objectForKey:indexPath];
if (iconDownloader == nil)
{
iconDownloader = [[IconDownloader alloc] init];
iconDownloader.appRecord = appRecord;
[iconDownloader setCompletionHandler:^{
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
// Display the newly loaded image
cell.imageView.image = appRecord.appIcon;
// Remove the IconDownloader from the in progress list.
// This will result in it being deallocated.
[self.imageDownloadsInProgress removeObjectForKey:indexPath];
}];
[self.imageDownloadsInProgress setObject:iconDownloader forKey:indexPath];
[iconDownloader startDownload];
}
}
có thể trùng lặp của [Có thể truyền \ [self anyFunction \] trong các khối không có đối tượng yếu \ _ \ _ (iOS 5 + ARC)] (http://stackoverflow.com/questions/9003600/possible-to-pass- self-anyfunction-in-blocks-without-weak-object-ios-5-arc), Xin lỗi Daniel :) – Abizern
Bạn đang nói không có cảnh báo vì có nhiều hơn một cấp cho chu kỳ, @Abizern? –
Không có cảnh báo vì không có chu kỳ lưu giữ. – Abizern