Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios initWithObjects:&value的含义是什么?_Ios_Objective C - Fatal编程技术网

Ios initWithObjects:&value的含义是什么?

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

在他们使用&value初始化NSSet对象时,我以前从未见过这样的情况。有人能给我解释一下吗?从文档来看,它似乎是initWithObjects:需要对象的C数组,为什么&value变成了数组?从我的理解和使用到参考地址,就像我在&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];
}

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

为什么要向下投票?对于不了解单个对象的地址如何与具有该对象的C数组等效的人来说,这是一个很好的、明确的问题。谢谢,我想问一下,如何区分它是单个值还是数组。那个伯爵解释了我的另一个疑问。