-1

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

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

和输出是-1。请解释。

4

1 回答 1

7

这是我指出的问题的欺骗。它是 -1,因为您将 UINT_MAX 打印为有符号整数。RC 为 -1,因为它是编译器有效生成的单例字符串,并且从未分配或释放。

这种模式:

    NSString *str = [[NSString alloc] init];
    str = @"Kashyap";

没有意义; 您正在分配一个字符串实例,在第一行中为其分配一个引用str,然后立即在第二行中覆盖该引用(如果您不使用 ARC,则泄漏第一个字符串)。

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

于 2013-05-24T14:32:12.573 回答