пятница, 6 июня 2014 г.

UICollectionView на iOS 6

Часа 3 ушло на то, чтобы понять почему UICollectionView совершенно не показывает своих ячеек с картинками (теплилась лишь слабая надежда, потому что снизу всё-таки была жива прокрутка). Оказалось, что фрейм был задан чуть с меньшей высотой чем нужно. И это проявлялось в моём случае только в устаревшей iOS 6 и только на iPhone. Помог только лишь тупой перебор вариантов (спасло то, что соседние UICollectionView показывали свои картинки-ячейки). Догадаться, что уменьшение высоты контрола делает его ячейки невидимыми я бы просто не смог.

пятница, 21 марта 2014 г.

Отчего приложение падает внутри блоков

Не используйте мемберы текущего объекта внутри блоков, выполнение которых происходит позже чем окружающий код. Например, выполнение блока может происходить только после того, как какие-то данные успешно скачались (через несколько долгих секунд). К моменту выполнения кода внутри блока объект self уже может оказаться удалённым из памяти приложения (то есть для него уже случился вызов dealloc метода). Если внутри блока вы обращаетесь к мемберу уже удалённого объекта, то приложение в таком случае упадёт. Вместо использования мемберов объекта заранее копируйте данные из них в локальные переменные, объявленные перед использованием блока.

Постоянные читатели