代码之家  ›  专栏  ›  技术社区  ›  TalkingCode

目标C:又是一个问题

  •  1
  • TalkingCode  · 技术社区  · 14 年前

    -(NSString *)description
    {
     NSString *descr = [[NSString alloc]
     initWithFormat:@"I am the description."];
    
     NSLog(@"Count: %lu",[descr retainCount]);
    
     return [descr autorelease];
    }
    

    如果改用initWithString,则计数为2147483647

    NSString *descr = [[NSString alloc]
    initWithString:@"I am the description."];
    

    所以这两种方法在内存管理方面肯定有区别。这里发生了什么?

    2 回复  |  直到 14 年前
        1
  •  4
  •   NSResponder    14 年前

    首先,你不应该关心什么是保留计数,只关心你是否正确地平衡了你的收入 -init , -copy -retain -release -autorelease

    也就是说,当你创建一个 NSString

        2
  •  -1
  •   Objective Interested Person    14 年前

    @NSResponder/和世界其他地区/:不,不要平衡初始化、复制和保留。缉毒是问题,平衡新的,分配,保留和复制消息是答案!