iOS内存管理语法考察

请问下面的代码打印结果是什么?

    NSString *firstString = @"helloworld";
    NSString *secondString = @"helloworld";
    
    if (firstString == secondString) {
        NSLog(@"Equal");
    }else{
        NSLog(@"Not Equal");
    }

答案是打印Equal

  • ==这个符号判断的不是这两个值是否相等,而是这两个指针是否指向同一个对象。如果要判断两个NSString的值是否相同,那么应该用isEqualToString这个方法。

  • 上面的代码中,两个指针指向不同的对象,尽管它们的值相同。但是iOS的编译器优化了内存分配,当两个指针指向两个值一样的NSString时,两者指向同一个内存地址。所以代码会进入if语句的判断,打印出Equal字样。

猜你喜欢

转载自blog.csdn.net/weixin_33828101/article/details/87483092
今日推荐