我有一個視圖控制器與表視圖與圖像init。 我加載圖像與AFNetworking,有時(主要是當我的互聯網連接速度很慢),當我點擊在視圖控制器的backbuttonitem和進入RootViewController的應用程序崩潰,我得到以下信息:從桌面視圖控制器返回應用程序崩潰
-[__NSCFDictionary numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x1f567e30
爲什麼? 使用ARC的Im。 這裏是我的代碼加載圖像
if(item.thumb)
{
[cell.listItemImage setImage: item.thumb];
}
else
{
UIActivityIndicatorView *loadingSymbol = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleGray];
loadingSymbol.frame = CGRectMake(0, 0, cell.listItemImage.frame.size.width, cell.listItemImage.frame.size.height);
[cell.listItemImage addSubview: loadingSymbol];
[loadingSymbol startAnimating];
[cell.listItemImage setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString: item.thumbUrl]]
placeholderImage:[UIImage imageNamed:@"transparent.png"]
success:^(NSURLRequest *request , NSHTTPURLResponse *response , UIImage *image)
{
item.thumb = image;
[cell setNeedsLayout];
[loadingSymbol removeFromSuperview];
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error)
{
NSLog(@"something went wrong wiv the images");
NSLog(@"%@", error);
//[loadingSymbol removeFromSuperview];
}
];
}
}
會很高興,如果有人可以幫助我在這裏!
編輯:
解決了我的第一個問題。但是現在當我在桌面視圖中滾動時,應用程序崩潰。我認爲它與這條線有關:
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
任何想法爲什麼?
根據你管理一個NSDictionaryObject分配給某些屬性,其中框架需要一個表委託的錯誤消息。 –
所以這發生在表視圖控制器已經釋放,但仍有數據在後臺加載。實際上,你保持對不應該存在的單元對象的引用。這些單元格可能仍然存在,因爲ARC依賴於這是強還是弱參考。 –
我不確定。那麼'[cell setNeedsLayout]'是否會導致單元格和表格被重新繪製,而表格或其控制器不再存在?但是,您應該找到一些更智能的解決方案。返回時取消所有打開的請求,或者當相關視圖不可見/不再存在時不處理數據。 –