我发现有关设置NSString常量的讨论使我按以下方式编写代码:
.h文件:
extern NSString * const kSectionHeaders;
.m文件:
NSString * const kSectionHeaders = @"header";
程序运行时,必须根据一系列NSString常量测试文本文件中的单词。
我读取内存比较应该在设置如上所述的功能时起作用:
if (property == kSectionHeaders) {...}
不起作用:( 以下工作,但它被描述为一个糟糕的解决方案(更慢,还有什么?):
if ([property isEqualToString:kSectionHeaders]){...}
我觉得我做错了什么。但看不出来的是什么! 请帮忙 :-) 谢谢! 学家
答案 0 :(得分:7)
==
执行指针比较,它不会比较两个对象的值。 isEqualToString:
(以及一般isEqual:
)是正确这样做的方式 - 它被描述为“糟糕的解决方案”?
答案 1 :(得分:5)
记住变量名只是指向内存中对象的指针。
==
操作数比较指针。除非它在内存中比较完全相同的对象,否则它不会成立。
isEqualToString:
是您最好的选择。不要太担心速度。这些设备足够快,可以在眨眼间进行比较。真正需要花费大量时间的事情就是在屏幕上画画并从磁盘上读取。
答案 2 :(得分:3)
谁形容这是一个糟糕的解决方案?它是解决当前问题的唯一正确/正确的解决方案。