Простое решение. Вид. Если Вы не можете использовать что-то как карта флэш-памяти с интерфейсом USB, поместите пароль на свой ключ SSH. Мгновенная двухфакторная аутентификация (вид). Вы не должны даже загружать новый открытый ключ.
Кэширование не является панацеей для производительности табличных представлений. Кэширование полезно только в том случае, если есть что-то дорогостоящее для расчета, и вы можете избежать этого. Если, с другой стороны, у вас просто слишком много представлений в вашем UITableViewCell, то кеширование вам ничего не даст. Если высота ваших строк одинакова, то кешировать нечего. Если вы используете + [UIImage imageNamed:]
, то система уже кэширует ваши изображения за вас.
Самая распространенная проблема первого порядка с UITableViewCells заключается в размещении в них слишком большого количества подвидов. Как вы построили свою камеру? Вы потратили время на изучение Руководства по программированию табличного представления, особенно Более пристальный взгляд на ячейки табличного представления ? Понимание этого документа избавит вас от многих проблем позже.
РЕДАКТИРОВАТЬ: (На основе кода выше)
Во-первых, вы извлекаете повторно используемую ячейку, а затем сразу ее выбрасываете, читаете NIB и перебираете все объекты верхнего уровня в поисках ячейки (той, которая выглядит почти так же, как та, которую вы только что выбросили). Затем вы составляете строку, которую используете для открытия файла и чтения его содержимого. Вы делаете это каждый раз, когда UITableView хочет новую ячейку, а это много. И вы делаете это снова и снова для одних и тех же строк.
Затем, когда UITableView хочет узнать высоту, вы снова читаете изображение с диска. И вы делаете это каждый раз, когда UITableView запрашивает (и он может много раз запрашивать одну и ту же строку, хотя пытается оптимизировать это).
Вам следует начать с чтения Руководства по программированию UITableView, которое я приведу выше. Надеюсь, это очень поможет. Когда вы это сделаете, вам следует подумать о следующих вещах:
Вы указали, что в этой ячейке нет ничего, кроме просмотра одного изображения. Вам действительно нужен СИБ для этого? Если вы все же придерживаетесь NIB (и в некоторых случаях есть причины использовать их), то прочтите Руководство по программированию о том, как реализовать базовую ячейку NIB. Вы должны использовать IBOutlet
, а не пытаться перебирать объекты верхнего уровня.
+ [UIImage imageNamed:]
автоматически найдет файлы в вашем каталоге ресурсов без необходимости выполнять путь пакета. Он также будет кэшировать эти изображения автоматически.
Смысл -dequeueReusableCellWithIdentifier:
заключается в том, чтобы получить ячейку, которую UITableView больше не использует и которую вы можете перенастроить, а не вы делаю новый. Вы звоните, но сразу выкидываете. Вы должны проверить, вернул ли он nil, и загружать его только из NIB, если это так. В противном случае вам просто нужно сменить изображение. Снова прочтите Руководство по программированию; у него много, много примеров этого. Просто убедитесь, что вы действительно пытаетесь понять, что делает -dequeueReusableCellWithIdentifier:
, и не относитесь к этому как к чему-то, что вы набираете на этом этапе программы.