【问题标题】:Passing NSSet and initialize it with values传递 NSSet 并用值初始化它
【发布时间】:2012-10-17 07:25:00
【问题描述】:

在主函数中我有一个集合

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

【问题讨论】:

    标签: nsarray foundation nsset nsmutableset


    【解决方案1】:

    集合需要作为指向指针的指针传递。因为常规指针是按值传递的,所以对 set1set2 的修改不会更改您从调用者传递给 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多