Objective-C中双指针的含义是什么?

时间:2013-02-27 09:16:14

标签: ios objective-c pointers

我在Java工作5年后开始学习Objective-C,并且不了解它的一些构造。这个Some_Object **是什么意思?例如,在此处的方法定义中:

- (NSString *)checkLastUpdate:(NSUInteger)loggedId   
 returnMsgs:(NSMutableArray **)returnMsgs
 {
       ....
if (returnMsgs) 
 {
*returnMsgs = NewMsgs;
}
     }

是指针指针还是什么?使用它的原因是什么?

3 个答案:

答案 0 :(得分:5)

它的 Pointer - 指针类型,与C语言相同。

除了错误回调之外,我认为这不是一个好的行为。 例如,我们调用一个函数,并在函数失败时需要错误信息:

- (id)handleData:(NSData *)inData error:(NSError **)outError;
{
if (inData == NULL || [inData length] == 0)
    {
    if (outError)
        *outError = [NSError errorWithDomain:kDataErrorDomain code:-1 userInfo:NULL];

我们可以这样打电话:

NSError *error = NULL;
[self handleData:data error:&error];

if (error) {
    // Handle error

答案 1 :(得分:2)

NSMutableArray **表示一个容器,它可以保存包含NSMutableArray的引用的地址,例如。

NSMutableArray * obj1; //obj1 can store reference of a mutable array
NSMutableArray ** obj2; // can contain address of obj1 that can store reference of a mutable array

您可以在最重要的场景中使用它

  • 如果要从函数返回多个对象(可以是错误对象或其他内容)

答案 2 :(得分:0)

这里的函数是将双指针NSMutableArray作为输出参数,并期望NSMutableArray实例将初始化为nil

我认为以下是在这里使用双指针的用例,

-(void)functionName{  
NSMutableArray *pArray = nil;  

NSString *update = [self checkLastUpdate:[self getLoggId] returnMsgs:&pArray ];

}