分配后RetainCount为-1​​?

时间:2013-05-24 05:21:34

标签: nsstring retaincount

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

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

,输出为-1。请解释。

1 个答案:

答案 0 :(得分:7)

这是我指出的问题的愚蠢。它是-1,因为您将UINT_MAX打印为有符号整数。 RC是-1,因为它是编译器生成的单例字符串,实际上是永远不会分配或取消分配的。

这种模式:

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

没有意义;你正在分配一个字符串实例,在第一行中将它的引用分配给str,然后立即覆盖第二行中的引用(如果你没有使用ARC,则泄漏第一个字符串)。 / p>

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