【问题标题】:Can anyone explain why what I am returning is not being picked up in later code?谁能解释为什么我返回的内容没有在以后的代码中被提取?
【发布时间】:2012-04-02 21:13:00
【问题描述】:

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

我在一个类中有一个函数,它返回一个 NSString,它又用于更改我在 UIView 上的标签中的文本。

当我返回 @"This is a Test" 之类的内容时;这工作正常,但返回我的 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 中传递,这才是真正让我难过的地方。

我希望我已经解释得足够好,并为缺乏行话道歉!

谢谢大家,

安迪。

【问题讨论】:

    标签: objective-c xcode class nsstring return


    【解决方案1】:

    我现在不在我的机器旁,但你有可能开启 ARC 吗?您将结果设置为result3,但随后result3 超出了右括号的范围。这里不需要声明NSString*结果,直接写就行了

    result3 = [NSString stringWuthFirmat:...
    

    甚至

    return [NSString stringWithFormat:...
    

    【讨论】:

    • 一旦我回到家并在我的电脑上,我会试一试 - 谢谢!我想我确实打开了 ARC,因为我在尝试添加保留或自动释放时说 ARC 明确禁止 .... 之前收到错误。
    • 我可以确认这行得通!我在那里做了第二行 return [NSString stringWithFormat... 解决了这个问题!现在下次出现这个问题时,我知道该怎么做了 - 非常感谢您的帮助!
    【解决方案2】:

    +stringWithFormat 仅适用于字符串文字的所有部分不为零。否则,它返回 nil;正如你所看到的。检查字符串的每个部分是否不为零。

    编辑;我刚刚也注意到你的语法问题*NSString *result3; 最好是一个错字。您不能指向指向 var 的类!此外,您永远不会显式实例化 result3,因此您不能期望它为非零。改用这个:

    result3 = [NSString stringWithString: resultString];

    然后尝试返回。

    【讨论】:

    • 您好 CodaFi,感谢您的快速回复。我可以确认它们都不是零,再次通过 NSLog 确认它。除非我错过了什么,但我不这么认为!
    • 实际上 CodaFi 在说“格式字符串不是字符串文字”之前有一个警告,这是否意味着某些内容可能为零?
    • 嗨 - 是的,这是一个错字!现在已经编辑了。关于您的其他建议,我尝试了这个,但不幸的是这并没有解决问题。当您说实例化 result3 时,您的意思是使用 @property(nonatomic, strong) 命令吗?我也在我的 .m 文件的顶部尝试了这个,然后合成了这个。当我试图在我的课堂上调用 result3 时,它没有被识别出来。为初学者的行话道歉,这是我大约一周前才开始的!
    • 不,实例化是 +alloc,-init,但在这种情况下 +stringWithString 为我们方便地做到了(这就是为什么它和类似的方法被称为便捷方法)。
    猜你喜欢
    • 2013-10-22
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多