На что следует обращать внимание при переходе на iOS 5

Резюме: Можете ли вы добавить в мой контрольный список вещей, на которые следует обратить внимание при переходе на iOS 5 ? StackOverflow был бесценен, поскольку я работал над обновлением до iOS 5. Я обнаружил некоторые довольно простые вещи, которые я пропустил до Xcode 4.2, и мне интересно, какие еще «подводные камни» могут скрываться.

Подробности: С выходом iOS 5 на этой неделе мне пришлось внести некоторые изменения в несколько своих приложений. Xcode 4.2 намного лучше анализирует код управления памятью из-за новой функции ARC. Обновление iOS 5 - отличный момент для проверки всего кода управления памятью. Новый компилятор также обнаруживает ряд других проблем, которые упускали предыдущие компиляторы. Престижность инженерам компилятора Apple. Вот основные вещи, которые помогли (и многие из них также применимы к более ранним версиям iOS).

  1. Убедитесь, что вызывается [super dealloc] в КОНЦЕ ваших методов освобождения , а не в начале.
  2. В viewDidUnload, некоторые люди сообщали об ошибках, требующих вызова [super viewDidUnload] в конце , а не в начале вашего viewDidUnload.
  3. Узнайте о счетчиках удержания, синтезированных установщиках и о том, когда вызывать освобождение или автоматическое освобождение. Новый компилятор укажет на больше проблем, чем старые компиляторы. (Я думал, что был осторожен, но, очевидно, я был недостаточно осторожен.) Обязательно прочтите руководство Apple по управлению памятью - никаких ярлыков.
  4. Рекомендуется включить зомби при отладке (в Xcode выберите Продукт | Изменить схему ... и выберите схему отладки; на вкладке «Диагностика» установите флажок «Включить объекты-зомби»). Это может помочь вам найти попытки использования зомби (объекты, которые вам больше не следует использовать).
  5. Также полезен инструмент Leaks. Запустите приложение в режиме профиля и выберите шаблон утечек. В окне «Инструменты» выберите инструмент «Утечки» и установите флажок «Gather Leaked Memory Contents». Это поможет вам увидеть, где в вашем коде происходит утечка памяти.

Есть несколько нюансов, с которыми я столкнулся:

  • Одноэлементный шаблон Apple требует «одностороннего» добавления в объявление типа возвращаемого значения:
    - (oneway void) release { }

Есть ли другие предложения о потенциальных ловушках, на которые мне следует обратить внимание? У меня есть ощущение, что мои приложения стали более стабильными, но раньше я чувствовал себя хорошо в них.

28
задан 3 revs, 2 users 74% 23 May 2017 в 12:25
поделиться