2011-08-22 60 views
0
@property(nonatomic, retain) NSString *password; 

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

我的問題是,在某些隨機點的執行過程中密碼對象被自動釋放。當我使用任何一項任務時,效果都是一樣的。只要我加入留存,問題就不復存在。我敢肯定,流程中的任何地方都沒有密碼對象的釋放 - 正如我提到它在單例類中。我也檢查過,即使密碼對象被釋放,類實例也是一樣的。NSString - stringWithFormat自動發佈

任何提示請!

回答

1

您分配了iVar,而不是屬性... 因此,如果您不使用setter方法,則不會保留您的對象。

使用屬性來代替:

self.password = ... 
0

您可以使用...

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

而且簽上memory management蘋果的文檔。我也會在你的代碼中設置斷點,然後看你的對象被釋放。