Objective-C常量:使用==?
关于设置NSString常量的讨论让我按照以下方式编写代码: .h文件: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) {...} 工作并不艰难:( 以下方法可行,但被
extern NSString * const kSectionHeaders;
.m文件:
NSString * const kSectionHeaders = @"header";
当程序运行时,它必须根据一系列NSString常量测试文本文件中的单词
当设置如上所述的功能时,读取内存比较应起作用:
if (property == kSectionHeaders) {...}
工作并不艰难:(
以下方法可行,但被描述为糟糕的解决方案(速度较慢,还有什么?):
我觉得我做错了什么,但看不出是什么!
请帮忙:-)
谢谢
J.
=
进行指针比较,它不会比较两个对象的值isEqualToString:
(一般来说,isEqual:
)是正确的方法吗?在哪里被描述为“糟糕的解决方案”谁将其描述为糟糕的解决方案?这是解决当前问题的唯一正确方法。记住变量名只是指向内存中对象的指针
=
操作数比较指针。除非它比较内存中完全相同的对象,否则它将不会为真
isEqualToString:
是您的最佳选择。不要太担心速度。这些设备足够快,可以在眨眼之间进行比较。真正需要注意的事情是在屏幕上绘图和从磁盘读取。您好,谢谢您的输入。我在一次讨论中读到了这一点。无法回到它,但是看到这一个[链接](),作者坚持认为==如何工作良好。但是你的解释感觉最好。而且效果最好;)谢谢。谢谢你确认这是正确的方式。请参见示例,其中==被描述为正确的方式。
if ([property isEqualToString:kSectionHeaders]){...}