复制不可变的字符串?

stu*_*ped 4 objective-c

在BNR iOS书中,作者说这样做copy而不是strong:

@property (nonatomic, copy) NSString *itemName;
Run Code Online (Sandbox Code Playgroud)

但我并没有真正理解这个目的,因为在main我尝试的方法中:

BNRItem *calculator = [[BNRItem alloc] init];

        NSString *pickle = @"pickbarn";
        backpack.itemName = pickle;
        pickle = @"fuffle";
Run Code Online (Sandbox Code Playgroud)

当我打印出来backpack的名字到它的控制台picklebarn,所以我真的不明白,为什么itemName必须copied

Wev*_*vah 5

因为可能传入可变字符串.

(另外,IIRC,-copy关于不可变的字符串,只是将它保留在引擎盖下.)