передавая параметр - PullRequest
18 голосов
/ 16 мая 2011

Я написал метод с выходным параметром:

-(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 установлено неправильно. Может ли кто-нибудь помочь мне сделать это правильно?

Ответы [ 2 ]

27 голосов
/ 16 мая 2011

Создайте метод для приема указателя на объект.

-(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];
11 голосов
/ 16 мая 2011

«Выходной параметр» по определению является указателем на указатель.

Ваш метод должен выглядеть следующим образом:

-(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];
...