Параметр прохождения
Я написал метод с параметром out:
-(NSString *)messageDecryption:(NSString *)receivedMessage outParam:(out)messageCondent
{
messageCondent = [receivedMessage substringFromIndex:2];
return [receivedMessage substringToIndex:1];
}
Затем я передал param следующим образом:
NSString *messageCondent;
NSString *mode = [myclassobject messageDecryption:message outParam:messageCondent];
Однако есть проблема. Значение параметра out не устанавливается должным образом. Может ли кто-нибудь помочь мне сделать это правильно?
Ответы
Ответ 1
Создайте метод для приема указателя на объект.
-(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];
Ответ 2
"Исходный параметр" по определению является указателем на указатель.
Ваш метод должен выглядеть следующим образом:
-(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];