Ios initWithObjects:&value的含义是什么?
在他们使用&value初始化NSSet对象时,我以前从未见过这样的情况。有人能给我解释一下吗?从文档来看,它似乎是initWithObjects:需要对象的C数组,为什么&value变成了数组?从我的理解和使用到参考地址,就像我在&error中看到的地址一样Ios initWithObjects:&value的含义是什么?,ios,objective-c,Ios,Objective C,在他们使用&value初始化NSSet对象时,我以前从未见过这样的情况。有人能给我解释一下吗?从文档来看,它似乎是initWithObjects:需要对象的C数组,为什么&value变成了数组?从我的理解和使用到参考地址,就像我在&error中看到的地址一样 - (void)removeEmployeesObject:(Employee *)value { NSSet *changedObjects = [[NSSet alloc] 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];
}
在C语言中,数组基本上是指向地址的指针。此处&value是指向保存Employee*值的地址的指针。您可以将其视为一个单值数组。如果有多个元素,则其他元素将在第一个元素之后逐个保存。但是指针总是指向第一个元素。这就是为什么函数需要一个count参数来准确地知道要从第一个指针中提取多少值。为什么要向下投票?对于不了解单个对象的地址如何与具有该对象的C数组等效的人来说,这是一个很好的、明确的问题。谢谢,我想问一下,如何区分它是单个值还是数组。那个伯爵解释了我的另一个疑问。