我是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中传递,这就是我真正难以理解的东西。
我希望我能够很好地解释这一点并为任何缺乏行话而道歉!
谢谢大家,
安迪。
答案 0 :(得分:1)
我现在不在我的机器上,但你可能有ARC吗?您将结果设置为result3
,但随后result3
超出了大括号的范围。您无需在此声明NSString*
结果,您只需编写
result3 = [NSString stringWuthFirmat:...
甚至
return [NSString stringWithFormat:...
答案 1 :(得分:0)
+ stringWithFormat只对字符串文字的所有部分起作用都不是nil。否则,它返回零;正如你所看到的那样。检查字符串的每个部分都不是零。
EDIT;我刚刚注意到你的语法问题*NSString *result3;
最好是拼写错误。你不能指向一个指向变量的类!此外,您从未明确地实例化result3
,因此您不能指望它是非零的。请改用:
result3 = [NSString stringWithString:resultString];
然后尝试返回。