我知道標題聽起來可能有點不可思議,但同樣適用於這個問題。可變突然撤掉
我一直在測試我的應用程序在模擬器上幾乎是在發展的整個時間,我沒有在真實的設備上,而一次測試,以確保公正。 但現在我已經接近完成一個問題了。
每當我大跳登錄,我的整個應用程序崩潰說的用戶名和密碼變量被釋放......
這裏是我的應用程序的流程:
當打開的應用程序,它會檢查用戶名和密碼被保存或注意
- (void)checkIfPreviouslyLoggedIn:(BOOL)didLogin andLogin:(BOOL)doLogin {
// some logic to get it out of the keychain
NSLog(@"checkIfPreviouslyLggedIn: ACCOUNT %@/%@", tmpUsername, tmpPassword);
// RETURN: checkIfPreviouslyLggedIn: ACCOUNT/
}
沒有之前保存的,沒什麼大不了的,用戶將只需輸入帳號和新聞中心登錄
- (void)loginWithUsername:(NSString *)username andPassword:(NSString *)password {
NSLog(@"loginWithUsername: ACCOUNT %@/%@", username, password);
// RETURN: loginWithUsername: ACCOUNT testUser/password
// save it for later use
_username = username;
_password = password;
NSLog(@"loginWithUsername: ACCOUNT %@/%@", _username, _password);
// RETURN: loginWithUsername: ACCOUNT testUser/password
// Attach a notification handler
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginCheck:) name:@"LoginCheck" object:nil];
// call the web API
[self doRequestFromLocation:@"/groups" withPostType:@"GET" andData:nil whichTriggersNotification:@"LoginCheck"];
}
酷,用戶名和密碼是很好的記錄,到目前爲止好,在doRequestFromLocation基本上是一個隊列類型的事情,我可以爲我想發送儘可能多的請求,它會處理逐一
- (void)doRequestFromLocation:(NSString *)location withPostType:(NSString *)type andData:(NSData *)data whichTriggersNotification:(NSString *)notification {
NSLog(@"doRequestFromLocation: ACCOUNT %@/%@", _username, _password);
// RETURN: doRequestFromLocation: ACCOUNT testUser/password
}
然後去一個doRequest方法,來完成實際的數據請求,再說,我有我的登錄用戶名和它的返回正確的。
NSLog(@"doRequest: ACCOUNT %@/%@", _username, _password);
這是在這之後,一切都發生可怕的事情,完成請求時,loginCheck()被調用
- (void)loginCheck:(NSNotification *)notification {
NSLog(@"loginCheck: ACCOUNT %@/%@", _username, _password);
}
在這裏我_username和_password將被釋放,即使實際調用之前我的權利檢查用戶名和密碼,他們仍然沒問題。
所以不知何故(神奇)的2個變量得到了釋放,沒有任何理由。 注意_username和_password在loginWithUsername唯一一套,他們沒有在任何地方我的應用程序更改。
2012-06-04 13:33:28.001雞舍[5060:707] * - [CFString字符串respondsToSelector:]:消息發送到釋放的實例0x1099fc40 2012-06-04 13:33:28.648雞舍[ 5060:707] * - [CFString字符串_cfTypeID]:消息發送到釋放實例0x1099fc40
什麼原因可能造成這一點,我添加了多個斷點,才意識到呼叫和loginCheck(),他們消失之間的某處。
這確實是問題的任何更多的幫助,這事模擬器以不同方式處理?那裏我從來沒有遇到任何問題。 –