Приложение не гладкое на устройстве? - PullRequest
0 голосов
/ 25 августа 2011

Я создал приложение для администрирования, которое отображает множество данных в таблицах, если я отлаживаю приложение или просто запускаю приложение на симуляторе, приложение работает очень плавно и вообще не отстает, но когда я запускаю / debug / release приложение на iPad само по себе, оно запаздывает и через полсекунды реагирует на взаимодействие с пользователем. Почему это так? У меня вообще нет утечек памяти, я прекрасно выделяю и освобождаю объекты, которые я использую (по крайней мере, я так думаю).

вот как я это делаю,

if([tablearrayTENNANTSID retainCount] != 1){tablearrayTENNANTSID = [[NSMutableArray alloc]init]; }
    else {[tablearrayTENNANTSID removeAllObjects];}

так что ... в основном, tennantIDarray retainscount не может пойти выше 1, потому что это единственное место, где он выделяется, и когда я хочу поместить новые данные в массив, я удаляю в нем все объекты и помещаю в него новые объекты, которые я получаю из массива JSON

Спасибо уже!

Ответы [ 2 ]

2 голосов
/ 25 августа 2011

НИКОГДА не используйте retainCount в качестве справки!retainCount предназначен только для стажировки, чтобы управлять объектом.Сделайте сравнение с нулем.Если в этот момент retainCount равно 2, вы теряете память ... Сделайте это следующим образом:

if(tablearrayTENNANTSID == nil){
    tablearrayTENNANTSID = [[NSMutableArray alloc]init]; 
}
else {
    [tablearrayTENNANTSID removeAllObjects];
}

и в dealloc (предполагая, что tablearrayTENNANTSID - это iVar), ссылайтесь на него.

Сандро Мейер

1 голос
/ 25 августа 2011

Я создал приложение для администрирования, которое отображает множество данных в таблицах, если я отлаживаю приложение или просто запускаю приложение на симуляторе, приложение работает очень плавно и вообще не отстает, но когда я запускаю / debug / release приложение на iPad само по себе, оно запаздывает и через полсекунды реагирует на взаимодействие с пользователем ... почему это так?

симулятор не имитирует аппаратное обеспечение. симулятор имитирует операционную систему.

ваше приложение будет выполняться в симуляторе в несколько раз быстрее. одно существенное отличие - это скорость процессора и количество логических ядер.

Конечно, существуют и другие аппаратные и программные различия между симулятором и реальным устройством (например, симулятор не симулирует относительную стоимость инструкций с плавающей запятой - процессоры Intel намного быстрее по сравнению с процессорами на руку). у вас также будет больше памяти на симуляторе (как правило). все эти различия складываются так, что вы испытываете гораздо более быстрое время выполнения на симуляторе.

У меня вообще нет утечек памяти, я прекрасно выделяю и освобождаю объекты, которые я использую (по крайней мере, я так думаю).

Вы можете подтвердить это, запустив приложение с инструментами.

почему ваше приложение работает медленно: вы можете профилировать (выпускную версию) ваше приложение на устройстве, чтобы определить, где оно тратит свое время. если время процессора уменьшается, и вы ориентируетесь на ipad, помните, что у вас есть 2 ядра для использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...