Objective-C常量:NSString比较使用==?

Jem*_*Jem 4 constants equals objective-c string-comparison nsstring

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

.h文件:

extern NSString * const kSectionHeaders;
Run Code Online (Sandbox Code Playgroud)

.m文件:

NSString * const kSectionHeaders = @"header";
Run Code Online (Sandbox Code Playgroud)

当程序运行时,它必须根据一系列NSString常量测试文本文件中的单词.

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

if (property == kSectionHeaders) {...}
Run Code Online (Sandbox Code Playgroud)

不起作用:(以下工作,但它被描述为一个糟糕的解决方案(较慢,还有什么?):

if ([property isEqualToString:kSectionHeaders]){...}
Run Code Online (Sandbox Code Playgroud)

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

CRD*_*CRD 7

==指针比较,不会比较两个对象的值.isEqualToString:(并且一般而言isEqual:)是正确的方法 - 在哪里被描述为"糟糕的解决方案"?


jac*_*ash 5

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

==操作比较指针.除非它在内存中比较完全相同的对象,否则它不会成立.

isEqualToString:是你最好的选择.不要太担心速度.这些设备足够快,可以在眨眼间进行比较.真正花费不可思议时间的事情是在屏幕上绘图并从磁盘读取.