Emi*_*mil 4 iphone comparison equality objective-c equals-operator
我在SO上看到了几个问题,包括函数isEqual:而不是标准的ansers ==.
到目前为止,我只学会使用它==,所以我想知道什么是更好的使用,每个的优点和缺点是什么?你应该什么时候使用它们?
谢谢.
他们做不同的事情; 所以你需要使用适当的:
考虑一下,如果你愿意:
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");
Run Code Online (Sandbox Code Playgroud)
换一种说法; ==只检查两个指针是否指向同一个地方,因此是同一个对象; isEqual:检查两个对象是否相等; 在这种情况下a,b它们是相同的字符串,c而是一个等于的新字符串,a因为它具有相同顺序的相同字符; 但它有不同的类和不同的地址.
您几乎总是希望isEqual:用于对象,如果有对象,则可以使用更具体的比较器,如果它们属于同一类(isEqualToString:例如).
==另一方面,您应该只用于整数数据类型.(它们对于对象没什么意义,对于浮点数则更少.)
| 归档时间: |
|
| 查看次数: |
854 次 |
| 最近记录: |