Ваша проблема в этой строке
UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://www.abc.com/abc/%@.png", [[arrMyCourses objectAtIndex:indexPath.row] valueForKey:@"CourseNumber"]]]]];
Вы загружаете изображение каждый раз, когда табличное представление запрашивает ячейку, и поверьте мне, это происходит довольно часто, поскольку табличное представление не создает полное представлениеодиночный выстрел.Он использует ячейки, выходящие за пределы экрана, чтобы представить новые видимые ячейки.Поэтому, как только ячейка выходит за пределы экрана и снова включается, cellForRowAtIndexPath:
вызывается снова.Таким образом, изображение загружается еще раз.Вы также загружаете изображение синхронно, что также блокирует пользовательский интерфейс.
Чтобы это исправить, вы должны сначала загрузить их один раз, сохранить их локально во временном местоположении и загрузить их в память по мере необходимости.Наличие всех их в памяти может быть дорогостоящим.Кроме того, переместите загрузку в фоновый режим, используя performSelectorInBackground:withObject
.Вам придется отправлять обновления UIKit обратно в главный поток, иначе у вас возникнут сбои.