Nsstring alloc后的重新计数为-1?

Nsstring alloc后的重新计数为-1?,nsstring,retaincount,Nsstring,Retaincount,请不要标记重复:- 我已经创建了几行 NSString *str = [[NSString alloc] init]; str = @"Test"; NSLog(@"%d",[str retainCount]); 输出为-1。请解释。这是我所指问题的重复。它是-1,因为您正在将UINT_MAX打印为有符号整数。RC是-1,因为它是由编译器生成的一个单例字符串,实际上从未分配或解除分配 这种模式: NSString *str = [[NSString alloc] init];

请不要标记重复:- 我已经创建了几行

NSString *str = [[NSString alloc] init];
str = @"Test";
NSLog(@"%d",[str retainCount]);

输出为-1。请解释。

这是我所指问题的重复。它是-1,因为您正在将UINT_MAX打印为有符号整数。RC是-1,因为它是由编译器生成的一个单例字符串,实际上从未分配或解除分配

这种模式:

    NSString *str = [[NSString alloc] init];
    str = @"Kashyap";
毫无意义;您正在分配一个字符串实例,在第一行中将引用分配给
str
,然后在第二行立即覆盖该引用(如果不使用ARC,则泄漏第一个字符串)


如果有一本教程或书提倡这种反模式,请指出。

但它是重复的。请访问www.whentooseretaincount.com。您甚至知道这是一个dupeRetainCount is-1,因为您要求的是一个永远不会释放的常量字符串