传出参数

Chr*_*ina 18 iphone objective-c out-parameters

我用out参数写了一个方法:

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

然后我像这样通过了这个参数:

NSString *messageCondent;
NSString *mode = [myclassobject messageDecryption:message outParam:messageCondent];
Run Code Online (Sandbox Code Playgroud)

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

tid*_*all 27

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

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

}
Run Code Online (Sandbox Code Playgroud)

传入对本地对象的引用.

NSString *messageCondent = nil;
NSString *mode = [myclassobject messageDecryption:message outParam:&messageCondent];
Run Code Online (Sandbox Code Playgroud)

  • 用于将`messageCondent`初始化为nil的+1 (6认同)

Jac*_*kin 11

根据定义,"out参数"是指向指针的指针.

您的方法应如下所示:

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

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

调用此方法非常简单:

NSString *messageCondent = nil;
NSString *mode = [myclassobject messageDecryption:message outParam:&messageCondent];
Run Code Online (Sandbox Code Playgroud)