当我尝试与另一个 NSString 进行比较时,NSString 仅显示内存地址

Posted

技术标签:

【中文标题】当我尝试与另一个 NSString 进行比较时,NSString 仅显示内存地址【英文标题】:NSString shows only the memory address when I try to compare with another 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 的字符串。 【参考方案1】:

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

【讨论】:

我一步一步地检查代码,在它进入else部分之前,在比较开始时它是空的。但在 viewdidload 方法中,我为其分配了一些值。存在直到 viewdidload 完成 也许,您在其他地方为它分配了不同的值?请仔细检查您的代码。

以上是关于当我尝试与另一个 NSString 进行比较时,NSString 仅显示内存地址的主要内容,如果未能解决你的问题,请参考以下文章

将 HKSample 与另一个 HKSample 进行比较以防止重复

如何根据与另一个表中的值的比较来更新列

如何将viewbag值与mvc 4中的模型另一个值进行比较

如何在Javascript中将一个数组的元素与另一个数组的索引进行比较?

如何将char数组中的值与另一个char进行比较

将数百行数据与另一个表中的数据进行比较