Может кто-нибудь объяснить, почему то, что я возвращаю, не было обнаружено в следующем коде? - PullRequest
0 голосов
/ 03 апреля 2012

Я действительно новичок в Objective-C, и это мой первый вопрос к форуму, и я надеюсь, что вы можете помочь!

У меня есть функция в классе, которая возвращает строку NSString, которая, в свою очередь, используетсяизменить текст в метке, которую я имею на моем UIView.

Когда я возвращаю что-то вроде @ "Это тест";это работает нормально, но возвращение моего NSString - нет.

Вот соответствующий код:

NSString *result3;
if ([operation isEqualToString:@"+"]) {
NSString *resultString = [NSString stringWithFormat:@"%@ %@ %@ %@ %@ ", openBracket, second, operation, first, closeBracket];
result3 = resultString;
}

return result3;
//NSLog(result3);
//return @"Hello";

Если я верну @ "Hello", эта строка будет пропущена, и позже будет получена команда изменить метку на эту.Если я пройду через result3, ничего не произойдет.Я могу сделать NSLog (result3), и он вернёт правильную строку, она просто не проходит через возвращаемый результат3, и это то, что действительно вводит меня в заблуждение.

Надеюсь, я объяснил это достаточно хорошо и извинения заЛюбой недостаток жаргона!

Спасибо всем,

Энди.

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Я сейчас не на своей машине, но возможно ли, что вы включили ARC?Вы устанавливаете результат на result3, но затем result3 выходит из области видимости с закрывающей скобкой.Вам не нужно объявлять NSString* результат здесь, вы можете просто написать

result3 = [NSString stringWuthFirmat:...

Или даже

return [NSString stringWithFormat:...
0 голосов
/ 03 апреля 2012

+ stringWithFormat только работы всех частей строкового литерала не равны нулю.Иначе, это возвращает ноль;так же, как вы видите.Убедитесь, что каждая часть вашей строки не равна нулю.

EDIT;Я только что заметил твои проблемы с синтаксисом *NSString *result3; лучше быть опечаткой.Вы не можете указать на класс, который указывает на переменную!Кроме того, вы никогда явно не создаете экземпляр result3, поэтому вы не можете ожидать, что он будет не нулевым.Используйте это вместо:

result3 = [NSString stringWithString: resultString];

Затем попытайтесь вернуться.

...