passing out parameter

I wrote a method with an out parameter:

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

Then I passed the param like this:

  • Offscreen UITextView invisible/clear text in iOS 5
  • File sharing / send file in another app (“open in” in iOS)
  • Google Maps Directions url error when adding multiple waypoints
  • Disassemble default iOS apps with otool
  • Showing an alert in an iPhone top-level exception handler
  • AFNetworking and background transfers
  • NSString *messageCondent;
    NSString *mode = [myclassobject messageDecryption:message outParam:messageCondent];
    

    However, there is a problem. The out parameter value is not being set properly. Can any one help me to do this correctly?

    2 Solutions Collect From Internet About “passing out parameter”

    Create the method to accept a pointer to the object.

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

    Pass in the reference to the local object.

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

    An “out parameter” is by definition a pointer to a pointer.

    Your method should look like this:

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

    This dereferences the passed-in pointer to get at the actual object reference and then assigns that to whatever [receivedMessage substringFromIndex:2] returns.

    Invoking this method is quite simple:

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