Что лучший способ состоит в том, чтобы отследить управление памятью при тестировании моего приложения для iPhone?

Благодаря объединенному наследованию таблиц SQLA прекрасно справляется с задачей, позволяя вам забыть о том, что используются даже две таблицы.

Ваша тестовая установка не вставляет никаких данных в tracker_locations, как было бы в случае, если вы создали экземпляр экземпляра Riders и вставили данные через ORM.

Вот часть соединения запроса, который генерирует SQLA:

FROM tracker_locations JOIN riders ON tracker_locations.id = riders.id

В тестируемом наборе данных нет строки в tracker_locations, поэтому условие соединения tracker_locations.id = riders.id не оценивает верно.

Итак, если вы также включите некоторые тестовые данные в таблицу tracker_locations, они будут работать:

tracker_locations_test_data = {'id': 1, 'type': 'riders'}
self.cur.execute(
    'INSERT INTO tracker_locations VALUES (?,?)', 
    tuple(tracker_locations_test_data.values()))

6
задан Dan Morgan 6 January 2009 в 12:05
поделиться

4 ответа

Используйте инструменты Leaks и Object Allocation через XCode.

Run > Start with Performance Tool > ...
6
ответ дан 9 December 2019 в 22:41
поделиться

В дополнение к другим ответам я настоятельно рекомендовал бы лязг использования, чтобы сделать анализ статического ЗУ Вашего кода. Это не зафиксирует каждую ошибку управления памятью, но это действительно ловит довольно много. Если Ваша главная проблема, будет казаться, будет возникать из памяти ошибки управления, то лязг будет иметь большое значение для нахождения тех ошибок. Лязг свободен по http://clang.llvm.org/

3
ответ дан 9 December 2019 в 22:41
поделиться

Я также нахожу прием NSZombie полезным для того, чтобы разыскать случаи объектов сверхвыпуска.

В основном ссылка описывает 'прием' так, чтобы объекты release'd были заменены объектами NSZombie, которые, если они выпущены снова, выдают исключения.

Можно затем использовать Инструменты для отслеживания назад туда, где объект был выделен.

0
ответ дан 9 December 2019 в 22:41
поделиться

Как Adam предполагает, Инструменты очень полезный инструмент для этих видов вещей. Это является довольно простым в использовании, но может быть немного подавляющим сначала. Я предлагаю просмотреть Инструментальное Руководство пользователя, как Вы начинаете. За этим довольно легко следовать и полезно, пока Вы не использовали Инструменты некоторое время. Даже не читая руководство, однако, Инструменты все еще намного легче и более интуитивны, чем замусоривание Вашего кода с NSLog () вызовы и попытка проанализировать вывод самостоятельно ;)

2
ответ дан 9 December 2019 в 22:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: