我在这里看到了几个关于 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:
检查两个对象是否相等;在这种情况下,a
和 b
是相同的字符串,而 c
是一个等于 a
的新字符串,因为它具有相同顺序的相同字符;但它有不同的类和不同的地址。
你几乎总是想对对象使用 isEqual:
,如果它们有它,如果它们属于同一类,则更具体的比较器(isEqualToString:
,例如)。
==
另一方面,您可能应该只使用整数数据类型。 (它们对对象意义不大,对 float 意义不大。)
关于iphone - 您应该使用 'isEqual' 还是 '=='?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3741281/