18

我写了一个带有 out 参数的方法:

-(NSString *)messageDecryption:(NSString *)receivedMessage outParam:(out)messageCondent
{   
    messageCondent = [receivedMessage substringFromIndex:2];
    return [receivedMessage substringToIndex:1];
}

然后我像这样传递了参数:

NSString *messageCondent;
NSString *mode = [myclassobject messageDecryption:message outParam:messageCondent];

但是,有一个问题。未正确设置 out 参数值。任何人都可以帮助我正确地做到这一点吗?

4

2 回答 2

27

创建方法以接受指向对象的指针。

-(NSString *)messageDecryption:(NSString *)receivedMessage outParam:(NSString**)messageCondent
{   
    *messageCondent = [receivedMessage substringFromIndex:2];
    return [receivedMessage substringToIndex:1];

}

传入对本地对象的引用。

NSString *messageCondent = nil;
NSString *mode = [myclassobject messageDecryption:message outParam:&messageCondent];
于 2011-05-16T17:29:10.590 回答
11

根据定义,“输出参数”是指向指针的指针。

您的方法应如下所示:

-(NSString *)messageDecryption:(NSString *)receivedMessage outParam:(NSString **)messageCondent
{   
    *messageCondent = [receivedMessage substringFromIndex:2];
    return [receivedMessage substringToIndex:1];
}

这将取消引用传入的指针以获取实际的对象引用,然后将其分配给[receivedMessage substringFromIndex:2]返回的任何内容。

调用此方法非常简单:

NSString *messageCondent = nil;
NSString *mode = [myclassobject messageDecryption:message outParam:&messageCondent];
于 2011-05-16T17:29:12.510 回答