iphone - 您应该使用 'isEqual' 还是 '=='?

标签 iphone objective-c comparison equality equals-operator

我在这里看到了几个关于 SO 的问题,答案包括函数 isEqual: 而不是标准的 ==

到目前为止,我只学会了使用==,所以我想知道用什么更好,各自的优缺点是什么?什么时候应该使用它们?

谢谢。

最佳答案

他们做不同的事情;所以你需要使用合适的:

考虑一下,如果你愿意:

NSString *a = @"Hello!";
NSString *b = a;
NSString *c = [a mutableCopy];

if (a == b) NSLog(@"This prints");
if (b == c) NSLog(@"This doesn't");
if ([a isEqual:c]) NSLog(@"This does");

换句话说; == 只是检查两个指针​​是否指向同一个地方,因此是同一个对象; isEqual: 检查两个对象是否相等;在这种情况下,ab 是相同的字符串,而 c 是一个等于 a 的新字符串,因为它具有相同顺序的相同字符;但它有不同的类和不同的地址。

你几乎总是想对对象使用 isEqual:,如果它们有它,如果它们属于同一类,则更具体的比较器(isEqualToString:,例如)。

== 另一方面,您可能应该只使用整数数据类型。 (它们对对象意义不大,对 float 意义不大。)

关于iphone - 您应该使用 'isEqual' 还是 '=='?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3741281/

相关文章:

iphone - LazyTableImages 与 SDWebImages

iphone - iPhone 应用程序可以在后台因重大位置变化而唤醒进行网络事件吗?

ios - 如何以编程方式将 UIButton 添加到 IBOutletCollection

assembly - 如何在 8080 上高效地进行签名比较?

php - 如何比较不同格式的地址(php/mysql)

python - 我可以将 pandas.dataframe.isin() 与数字容差参数一起使用吗?

iphone - 如何使ios App Store链接带参数?

ios - viewDidDisappear 时布局被破坏

iphone - UITableView 自定义单元格抛出 SIGABRT 错误

objective-c - 在简单的iOS游戏中最好的音频处理方法是什么?