【问题标题】:NSString shows only the memory address when I try to compare with another NSString当我尝试与另一个 NSString 进行比较时,NSString 仅显示内存地址
【发布时间】:2014-12-03 10:45:58
【问题描述】:

我有一个名为 insideStringNSString,它在 .h 文件中全局定义。在viewdidload 中,我将一些字符串分配给insideString 变量。几句话后,我使用NSTimer 调用另一个方法。

在该方法中,我想将此insideString 变量与另一个字符串进行比较。但在那个时候。这个insideString 变量变为空。当我此时打印该变量时,它只显示内存地址。

NSString *strnewinsideString = [strM3u81 substringWithRange:[match rangeAtIndex:1]];
if ([strnewinsideString isEqualToString:insideString]) {            
    [self downloadM3u8:sender];
}
else
{
    insideString=strnewinsideString;
}

这是我想做的。但是这里insideString 总是显示它的内存地址。请帮帮我。

谢谢。

【问题讨论】:

  • 在比较之前检查两个字符串值 .insideString 空意味着有些地方它会变空
  • NSLog看值,有时调试器很烂。
  • 我有一个名为 insideString 的 NSString,它是在 .h 文件中全局定义的。 这不计算。向我们展示如何声明和初始化 insideString
  • 您在使用 ARC 吗?如果不是,当自动释放池被刷新时,您的字符串可能是 dealloc。您必须保留或复制您分配给 insideString 的字符串。

标签: ios objective-c nsstring


【解决方案1】:

这行代码使您的字符串为空:insideString=strnewinsideString; 在您的 else 块中。所以,我认为如果你想保留你的insideString,你应该为那一行使用一些其他的临时指针。祝你好运!

【讨论】:

  • 我一步一步地检查代码,在它进入else部分之前,在比较开始时它是空的。但在 viewdidload 方法中,我为其分配了一些值。存在直到 viewdidload 完成
  • 也许,您在其他地方为它分配了不同的值?请仔细检查您的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
  • 2011-02-09
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
相关资源
最近更新 更多