请不要标记重复: - 我创建了几行
NSString *str = [[NSString alloc] init];
str = @"Test";
NSLog(@"%d",[str retainCount]);
,输出为-1。请解释。
答案 0 :(得分:7)
这是我指出的问题的愚蠢。它是-1,因为您将UINT_MAX打印为有符号整数。 RC是-1,因为它是编译器生成的单例字符串,实际上是永远不会分配或取消分配的。
这种模式:
NSString *str = [[NSString alloc] init];
str = @"Kashyap";
没有意义;你正在分配一个字符串实例,在第一行中将它的引用分配给str
,然后立即覆盖第二行中的引用(如果你没有使用ARC,则泄漏第一个字符串)。 / p>
如果有教程或书籍提倡反模式,请指出。