2

在主要功能我有一套

    NSMutableSet *set1 = [[NSMutableSet alloc ]init];
    NSMutableSet *set2 = [[NSMutableSet alloc ]init];

我想要一个可以用一些值“初始化”的函数。

喜欢(但不工作):

void initSet (NSMutableSet *set1, NSMutableSet *set2)
{
    NSArray *a1 = [NSArray arrayWithObjects: intNum(1), intNum(2), nil];
    NSArray *a2 = [NSArray arrayWithObjects:intNum(3), intNum(4), intNum(5), intNum(6), intNum(7), nil];

    set1 = [NSMutableSet setWithArray: a1];
    set2 = [NSMutableSet setWithArray: a2];
}
4

1 回答 1

0

这些集合需要作为指向指针的指针传递。因为常规指针是按值传递的,修改set1而不set2更改您initSet从调用者传递给的值。

void initSet (NSMutableSet **set1, NSMutableSet **set2)
{
    NSArray *a1 = [NSArray arrayWithObjects: intNum(1), intNum(2), nil];
    NSArray *a2 = [NSArray arrayWithObjects:intNum(3), intNum(4), intNum(5), intNum(6), intNum(7), nil];

    *set1 = [NSMutableSet setWithArray: a1];
    *set2 = [NSMutableSet setWithArray: a2];
}

调用这个函数如下:

NSMutableSet *s1, *s2;
initSet(&s1, &s2);
于 2012-10-27T03:19:38.220 回答