当单指针可以在Objective-C中工作时,为什么要使用双指针?

时间:2019-05-06 17:38:03

标签: objective-c double-pointer

我知道使用指针的好处,但是双指针是我真正不明白的。有人告诉我,当您希望该方法修改传入的参数值时,将使用双指针。给定以下示例,将5打印在日志中。那么,为什么要在void changeInt(int **i)中使用双指针呢?

int main (int argc, const char * argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    int *a = 1;

    changeInt(&a);
    NSLog(@"%i", a);
    [pool drain];
    return 0;
}

void changeInt(int *i)
{
    *i = 5;
}

1 个答案:

答案 0 :(得分:1)

不需要带标量(int)的双指针。显然,您需要的只是一个指针。

但是对象已经指针。因此,要对一个对象执行相同的操作,您需要一个双指针。典型的用例是NSError**

+ (id)stringWithContentsOfFile:(NSString *)path
                      encoding:(NSStringEncoding)enc
                         error:(NSError **)error