【问题标题】:RetainCount is -1 after alloc? [duplicate]分配后RetainCount为-1​​? [复制]
【发布时间】:2013-05-24 05:21:34
【问题描述】:

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

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

输出为-1。请解释一下。

【问题讨论】:

  • 虽然是重复的。请参阅 www.whentouseretaincount.com。
  • 你甚至知道这是一个骗局
  • RetainCount 是-1,因为你要求一个永远不会释放的常量字符串

标签: nsstring retaincount


【解决方案1】:

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

这种模式:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 2018-05-19
    • 2011-01-02
    相关资源
    最近更新 更多