And*_*son 0 cocoa cocoa-touch objective-c
我知道==,在比较指向同一对象的变量的情况下,它通常可用于对象比较.然而,即使在这些情况下,我认为isEqual:总是有效的.
==当您认为比较指针时尝试使用是否更好,或者isEqual:在不比较基元时是否应该总是使用?
我倾向于认为通过总是使用isEqual:,您可以更容易地判断代码是否一目了然.
Jea*_*ean 11
使用==,像你说的会比较指针.使用它,您知道这两个对象是否是同一个实例.
通过使用isEqual:你比较他们的价值观.
两个不同的NSString可以包含相同的文本:Hello World!.它们的地址不同(两个不同的对象)但它们的值将是相同的.
在这种情况下==将返回NO并isEqual:应返回YES.
例:
NSString* str1 = @"Hello World!";
NSString* str2 = [@"Hello " stringByAppendingString:@"World!"];
if (str1 == str2)
{
NSLog(@"str1 == str2");
}
if ([str1 isEqualToString:str2])
{
NSLog(@"str1 is equal to str2");
}
Run Code Online (Sandbox Code Playgroud)
只会输出:
2013-04-04 21:04:18.365测试[7310:303] str1等于str2
笔记:
我没用过:
NSString* str1 = @"Hello World!";
NSString* str2 = @"Hello World!";
Run Code Online (Sandbox Code Playgroud)
因为编译器为文字生成单个对象.在这种情况下,两个等式(==和isEqual:)都会得到满足.
| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |