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