NSString - stringWithFormat自动释放

时间:2011-08-22 17:22:49

标签: nsstring retain autorelease

@property(nonatomic, retain) NSString *password;

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

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

请提示!

2 个答案:

答案 0 :(得分:1)

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

改为使用该属性:

self.password = ...

答案 1 :(得分:0)

你可以使用......

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

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