Objective-C常量:使用==?

Objective-C常量:使用==?,objective-c,nsstring,constants,equals,string-comparison,Objective C,Nsstring,Constants,Equals,String Comparison,关于设置NSString常量的讨论让我按照以下方式编写代码: .h文件: extern NSString * const kSectionHeaders; .m文件: NSString * const kSectionHeaders = @"header"; 当程序运行时,它必须根据一系列NSString常量测试文本文件中的单词 当设置如上所述的功能时,读取内存比较应起作用: if (property == kSectionHeaders) {...} 工作并不艰难:( 以下方法可行,但被

关于设置NSString常量的讨论让我按照以下方式编写代码:

.h文件:

extern NSString * const kSectionHeaders;
.m文件:

NSString * const kSectionHeaders = @"header";
当程序运行时,它必须根据一系列NSString常量测试文本文件中的单词

当设置如上所述的功能时,读取内存比较应起作用:

if (property == kSectionHeaders) {...}
工作并不艰难:( 以下方法可行,但被描述为糟糕的解决方案(速度较慢,还有什么?):

我觉得我做错了什么,但看不出是什么! 请帮忙:-) 谢谢
J.

=
进行指针比较,它不会比较两个对象的值
isEqualToString:
(一般来说,
isEqual:
)是正确的方法吗?在哪里被描述为“糟糕的解决方案”

谁将其描述为糟糕的解决方案?这是解决当前问题的唯一正确方法。

记住变量名只是指向内存中对象的指针

=
操作数比较指针。除非它比较内存中完全相同的对象,否则它将不会为真


isEqualToString:
是您的最佳选择。不要太担心速度。这些设备足够快,可以在眨眼之间进行比较。真正需要注意的事情是在屏幕上绘图和从磁盘读取。

您好,谢谢您的输入。我在一次讨论中读到了这一点。无法回到它,但是看到这一个[链接](),作者坚持认为==如何工作良好。但是你的解释感觉最好。而且效果最好;)谢谢。谢谢你确认这是正确的方式。请参见示例,其中==被描述为正确的方式。
if ([property isEqualToString:kSectionHeaders]){...}