initWithObjects:& value是什么意思?

时间:2015-01-14 05:31:38

标签: ios objective-c

Apple Document中,他们使用& value初始化NSSet对象,我以前从未见过这个。有人可以帮我解释一下吗?从文档看似initWithObjects:所需的C数组对象,怎么来和值变成数组?从我的理解和用于引用地址,就像我在& error中看到的那样。

- (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];
}

1 个答案:

答案 0 :(得分:4)

在C中,数组基本上是指向地址的指针。此处&value是一个指针,指向保存(Employee *)value的地址。您可以将其视为单值数组。如果有多个元素,则其他元素将在第一个元素之后彼此相邻地保存。但指针始终指向第一个元素。这就是为什么函数需要一个count参数来确切知道要从第一个指针中提取多少个值。