请问下面的代码打印结果是什么?
NSString *firstString = @"helloworld";
NSString *secondString = @"helloworld";
if (firstString == secondString) {
NSLog(@"Equal");
}else{
NSLog(@"Not Equal");
}
答案是打印Equal
-
==这个符号判断的不是这两个值是否相等,而是这两个指针是否指向同一个对象。如果要判断两个NSString的值是否相同,那么应该用isEqualToString这个方法。
-
上面的代码中,两个指针指向不同的对象,尽管它们的值相同。但是iOS的编译器优化了内存分配,当两个指针指向两个值一样的NSString时,两者指向同一个内存地址。所以代码会进入if语句的判断,打印出Equal字样。
网友评论