【问题标题】:NSString - stringWithFormat released automaticallyNSString - stringWithFormat 自动释放
【发布时间】:2011-08-22 17:22:48
【问题描述】:
@property(nonatomic, retain) NSString *password;

-(id)init {
...
password=[NSString stringWithFormat:@"%@", [[NSProcessInfo processInfo] globallyUniqueString]];
OR
password=[[NSProcessInfo processInfo] globallyUniqueString];
}

我的问题是,在执行过程中,在某个随机点,密码对象会自动释放。当我使用任何一个任务时,效果都是一样的。一旦我放入保留,问题就不再存在。我确定在流程中的任何地方都没有释放密码对象 - 正如我提到的那样,它在单例类中。我还检查了即使释放了密码对象,类实例也是相同的。

请给点提示!

【问题讨论】:

    标签: nsstring retain autorelease


    【解决方案1】:

    您分配的是 iVar,而不是属性... 因此,由于您不使用 setter 方法,因此您的对象不会被保留。

    改用该属性:

    self.password = ...
    

    【讨论】:

      【解决方案2】:

      你可以使用...

      password=[[NSString stringWithFormat:@"%@", [[NSProcessInfo processInfo] globallyUniqueString]] retain];
      

      还可以在memory management 上查看 Apple 的文档。我还会在您的代码中设置断点,然后查看您的对象是否被释放。

      【讨论】:

        猜你喜欢
        • 2011-08-12
        • 1970-01-01
        • 1970-01-01
        • 2010-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多