当我尝试与另一个 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 【问题描述】:我有一个名为 insideString
的 NSString
,它在 .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 进行比较以防止重复