2015-01-14 3 views
2

В Apple Document они инициализируют объект NSSet с & value Я никогда раньше этого не видел. Может ли кто-нибудь объяснить это мне? Из документа его кажется initWithObjects: требуется C-массив объекта, как получилось & значение становится Array? Из моего понимания & использовать для ссылки адрес, как тот, который я видел в & ошибка.Что означает initWithObjects: & value?

- (void)removeEmployeesObject:(Employee *)value 
{ 
    NSSet *changedObjects = [[NSSet alloc] initWithObjects:&value count:1]; 

    [self willChangeValueForKey:@"employees" 
      withSetMutation:NSKeyValueMinusSetMutation 
      usingObjects:changedObjects]; 
    [[self primitiveEmployees] removeObject:value]; 
    [self didChangeValueForKey:@"employees" 
      withSetMutation:NSKeyValueMinusSetMutation 
      usingObjects:changedObjects]; 
} 
+0

http://www.apeth.com/iOSBook/ch01.html#_arrays – matt

+4

Почему пустые голоса? Это хороший, ясный вопрос для кого-то, кто не понимает, как адрес одного объекта работает, чтобы быть эквивалентным массиву C с этим одним объектом. – rmaddy

ответ

4

В С массиве в основном указатель на адрес. Здесь &value - указатель, указывающий на адрес, где сохраняется (Employee *)value. Вы можете считать это единственным массивом значений. Если имеется более одного элемента, остальные элементы будут сохранены один рядом друг с другом после первого элемента. Но указатель всегда указывает на первый элемент. И поэтому функции нужен аргумент count, чтобы точно знать, сколько значений нужно извлечь из первого указателя.

+0

Спасибо, спросите, как дифференцировать, если это одно значение или массив. Это «подсчет» объясняет мои другие сомнения. – sarunw

Смежные вопросы