• Geek_923968
    2019-08-27
    这节讲解的有错误。用OC也不一样,涉及到字符穿的拷贝问题。赋值后实际字符串已经拷贝了,他们在栈上的指针已经不是同一个。

    作者回复: 首先,你可以在OC里面尝试下面的代码:
     NSMutableString *a = [NSMutableString new];
        NSMutableString *b = a;
        [b appendString:@"123"];
        if (b == a) {
            NSLog(@"b == a");
        }
        if ([b isEqualToString:a]) {
            NSLog(@"b isEqualToString:a");
        }

    其次,swift里面String是值类型,==比较的是值是否相等,并不是比较两个变量地址。 swift里面String的==比较对标OC里的isEqualToString:方法

    
     1
  • 拉德姆
    2019-08-25
    字符串值都不一样,比较还有什么意义?
    
     1
  • 九三
    2019-11-17
    老师,是不是所有语言的 值类型和引用类型 都是这个特性

    作者回复: 所有语言中值类型和引用类型基本特性都是一致的。 值类型和引用类型的特性包含在名字本身,而不针对特定语言

    
    
  • 程相康
    2019-09-12
    老师可以把字符串的地址打出来。
    
    
  • 月巴 森
    2019-09-03
    OC里的mutableString是指针拷贝,swift的string的var是值拷贝。记得哪里看过说swift里面的值类型是copyOnWrite的,刚试了一下,初始赋值已经不是同一个内存地址了,不知道是不是现在做了改变?

    作者回复: 对,地址打印可能会不一样,但是仍然是copy on write,可以用前面学到的swiftc命令看下汇编

     1
    
  • langzuxiaozi
    2019-08-21
    判断字符串相等 为true,修改了另一个字符串,然后比较,为false。 你这个解释是错误的。对资源拷贝优化
     1
    
我们在线,来聊聊吧