Общий Размер объекта NSMutableArray

Эффективность TDD независима от размера проекта. Я буду практиковать три закона TDD даже на самом маленьком осуществлении программирования. Тесты не занимают время для записи, и они сохраняют огромное количество отладки времени. Они также позволяют мне осуществлять рефакторинг код без страха перед повреждением чего-либо.

TDD является дисциплиной, подобной дисциплине двойной бухгалтерии записи, осуществленной бухгалтерами. Это предотвращает ошибки в-маленьком. Бухгалтеры введут каждую транзакцию дважды; однажды как кредит, и однажды как дебет. Если никакие простые ошибки не были совершены, то баланс суммирует для обнуления. Тот нуль является простой выборочной проверкой, которая препятствует тому, чтобы руководители попали в тюрьму.

К тому же программисты пишут модульные тесты перед своим кодом как простая выборочная проверка. В действительности они пишут каждый бит кода дважды; однажды как тест, и однажды как производственный код. Если тесты передают, два бита кода соглашаются. Никакая практика не защищает от больших и более сложных ошибок, но оба метода, тем не менее, ценны.

практика TDD не является действительно методом тестирования, это - практика разработки. Слово "тест" в TDD является более или менее совпадением. По сути, TDD не является заменой для хороших методов тестирования и хороших тестеров QA. Действительно, это - очень хорошая идея испытать тестеры, пишут планы тестирования QA независимо (и часто перед) программисты, пишущие код (и их модульные тесты).

Это - мое предпочтение (действительно моя страсть), что эти независимые тесты QA также автоматизированы с помощью инструмента как FitNesse, Селен , или Watir. Тесты должно быть легко считать деловыми людьми, легкими выполниться, и совершенно однозначный. Необходимо быть в состоянии выполнить их в любой момент, обычно много раз в день.

Каждая система также должна быть протестирована вручную. Однако ручное тестирование никогда не должно быть механическим. Должен быть автоматизирован тест, который может быть задан сценарием. Вы только хотите поместить людей в цикл, когда человеческое решение необходимо. Поэтому люди должны делать исследовательское тестирование , не слепо следуя планам тестирования.

Так, короткий ответ на вопрос того, когда к модульному тесту по сравнению с ручным тестом то, что существует не "по сравнению с". Необходимо записать автоматизированные модульные тесты первый для подавляющего большинства кода, который Вы пишете. Необходимо было автоматизировать приемочные испытания QA, записанные тестерами. И необходимо также практиковать стратегическое исследовательское ручное тестирование.

36
задан VikingoS says Reinstate Monica 5 March 2013 в 07:10
поделиться

4 ответа

Чтобы получить количество объектов в массиве, используйте

[temp count]

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

100
ответ дан 27 November 2019 в 05:14
поделиться
size_t size = class_getInstanceSize([temp Class]);
for (id obj in temp) {
    size += class_getInstanceSize([obj Class]);
}

Обратите внимание, что class_getInstanceSize объявлен в /usr/include/objc/runtime.h

. Также обратите внимание, что это будет учитывать только размер памяти ivars, объявленных в каждый класс.

8
ответ дан 27 November 2019 в 05:14
поделиться

Прямого способа сделать это нет, поскольку все объекты хранятся только по ссылке. В какао нет конкретного понятия «размер», тем более что у объектов может быть несколько владельцев, что может привести к двойному счету или другим проблемам.

5
ответ дан 27 November 2019 в 05:14
поделиться

Ну, вы могли бы сделать что-то вроде:

size_t total;
id obj;
for (obj in temp)
  {
  total += class_getInstanceSize([obj class]);
  }

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

Если вы пытаетесь понять, сколько памяти вы вы используете, я предлагаю покопаться в руководствах по инструментам и получить представление о проверках использования памяти, которые они предоставляют.

2
ответ дан 27 November 2019 в 05:14
поделиться