gpt4 book ai didi

ios - 不变的NSString

转载 作者:行者123 更新时间:2023-12-01 17:39:42 25 4
gpt4 key购买 nike

我有这个例子

import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic,strong) NSString *name;
@end
@implementation Person
@end
int main(int argc, char *argv[]) {
@autoreleasepool {
Person *p = [Person new];
NSString *name = @"Alice";

p.name = name;
NSLog(@"%@",p.name); // prints Alice

NSString *nameBob = @"Bob";

name = nameBob;
NSLog(@"%@",p.name); // prints Alice }
}
}

我知道NSString是不可变的,我无法修改其内容(“爱丽丝”),但可以更改NSString指向的位置(名称= nameBob)。
为什么最后一个NSLog不打印“Bob”?

最佳答案

名称是指向字符串的指针。

p.name是另一个指向字符串的指针。

首先,您将名称设置为指向字符串“@Alice”

然后,将p.name设置为指向相同的字符串“Alice”。您未将p.name设置为指向名称,而是将其设置为指向名称指向的相同地址。 (字符串“Alice”)

然后,您将名称设置为指向另一个字符串“Bob”。

p.name变量仍指向第一个字符串“Alice”。

关于ios - 不变的NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24253466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com