Escribí un método con un parámetro de salida:

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

Luego me pasó el param como este:

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

Sin embargo, hay un problema. El parámetro de valor no ha sido configurado correctamente. Puede alguien ayudarme a hacer esto correctamente?

  • En caso de no especificar un tipo? outParam: la(NSString *)?
  • En realidad nunca he visto este out método utilizado antes. Creo que la mayoría de la gente simplemente implementar valor de referencia. (Marque la respuesta correcta en esta página: discussions.apple.com/thread/1502936?threadID=1502936)
  • Tener en cuenta que paso por referencia en Cacao/iOS se limita en gran medida a NSError**. Si usted necesita devolver más de un valor en un momento, que ruega por una estructura o, más a menudo, de una clase.
  • out es una palabra clave en Objective-C que estaba relacionado con la distribución de Objetos. No se utiliza mucho más.
InformationsquelleAutor Christina | 2011-05-16

2 Comentarios

  1. 27

    Crear el método para aceptar un puntero al objeto.

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

    Pasar en la referencia al objeto local.

    NSString *messageCondent = nil;
    NSString *mode = [myclassobject messageDecryption:message outParam:&messageCondent];
    • +1 para la inicialización de messageCondent a nil
    • y para dar un tipo explícito para el parámetro.
    • gracias…se puede saber .h definición de método también
    • Tenga en cuenta que el uso de parámetros en Objective-C es extremadamente raro; bastante limitada sólo NSError**
    • es allí cualquier problm con param?
  2. 11

    Un «fuera de parámetros» es, por definición, un puntero a un puntero.

    Su método debería tener este aspecto:

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

    Esto elimina referencias al pasado-en el puntero para obtener en el propio objeto de referencia y, a continuación, asigna que a lo [receivedMessage substringFromIndex:2] devuelve.

    La invocación de este método es bastante simple:

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

Dejar respuesta

Please enter your comment!
Please enter your name here