任何人都可以解释为什么我回来的东西没有在以后的代码中被提取?

时间:2012-04-02 21:13:00

标签: objective-c xcode class nsstring return

我是Objective-C的新手,这是我对论坛的第一个问题,希望你能提供帮助!

我在一个返回NSString的类中有一个函数,而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),它会返回一个有效的字符串,它只是没有在返回result3中传递,这就是我真正难以理解的东西。

我希望我能够很好地解释这一点并为任何缺乏行话而道歉!

谢谢大家,

安迪。

2 个答案:

答案 0 :(得分:1)

我现在不在我的机器上,但你可能有ARC吗?您将结果设置为result3,但随后result3超出了大括号的范围。您无需在此声明NSString*结果,您只需编写

即可
result3 = [NSString stringWuthFirmat:...

甚至

return [NSString stringWithFormat:...

答案 1 :(得分:0)

+ stringWithFormat只对字符串文字的所有部分起作用都不是nil。否则,它返回零;正如你所看到的那样。检查字符串的每个部分都不是零。

EDIT;我刚刚注意到你的语法问题*NSString *result3;最好是拼写错误。你不能指向一个指向变量的类!此外,您从未明确地实例化result3,因此您不能指望它是非零的。请改用:

result3 = [NSString stringWithString:resultString];

然后尝试返回。