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 に答える