что делает показанный код подсчета массива NSLog?

NSLog(@"%d",[annotations count]);

Приведенный выше код используется с NSMutableArray с именем «аннотации».

Мой вопрос: что именно делает этот код?

Я знаю, что NSLog выводит текст, и его аннотации подсчитываются... поэтому я думаю, что он выводит количество элементов в массиве аннотаций.

Я прав?


person Simagen    schedule 03.09.2012    source источник
comment
В Xcode нажмите Option+Click и прочитайте содержимое всплывающего окна.   -  person Matthias Bauch    schedule 03.09.2012
comment
@MatthiasBauch, какой ключ на Mac будет Option? команда? альтернативный?   -  person Simagen    schedule 03.09.2012
comment
Они больше не маркируют их опцией? Тогда должно быть alt.   -  person Matthias Bauch    schedule 04.09.2012
comment
@MatthiasBauch Да, они все еще говорят option ... Нижний ряд слева на Mac — это «fn», «control», «option / alt», «command».   -  person WendiKidd    schedule 07.09.2012


Ответы (3)


Вы могли бы просто запустить код, чтобы проверить это, но да, эта команда выводит в NSLog количество массивов с именем «аннотации». Например, если массив содержит объекты и индексы 0,1,2,3 и 4, счетчик массива будет равен 5.

NSArray * array = [NSArray arrayWithObjects:@"zero", @"one", @"two", @"three", @"four", nil];
NSLog(@"Number of items in my array is: %d", [array count]);//this will return (5)

Дополнительные сведения см. в этом сообщении: Размер NSArray

person Mick MacCallum    schedule 03.09.2012

Да, вы правы точно. NSLog выводит текст в окно консоли, а функция count массива выводит количество элементов в этом массиве.

NSLog печатает текст особым образом; везде, где есть %i, %d, %f, %@ и т. д., он заменяет этот символ переданной переменной. Итак, если я набрал:

NSLog(@"Hi my name is %@. I am %i years old.", @"Sarah", 12);

Консоль напечатает:

Hi, my name is Sarah.  I am 12 years old.

Итак, в вашем примере, если аннотации имеют 10 элементов, 10 будет просто напечатано на консоли. Это может сбить с толку, если вы просто напечатаете кучу чисел! Таким образом, используя гибкость NSLog, было бы легче читать вывод журнала, если бы вы сделали это:

NSLog(@"Elements in annotations array: %d", [annotations count]);

Затем это будет напечатано на вашей консоли:

Elements in annotations array: 10

Что может быть более полезным при чтении ваших журналов!

person WendiKidd    schedule 03.09.2012
comment
В вашем первом примере вы ожидаете строковый объект, но предоставляете массив символов в стиле C (c-string). Исправьте это, поставив перед строкой Sarah символ AT. - person Till; 03.09.2012
comment
@Till Meep, извини! Спасибо, что заметили опечатку! - person WendiKidd; 07.09.2012

Да, он просто отобразит количество объектов в массиве

person Darren    schedule 03.09.2012