我的iPhone應用程序是Tab based
。在一個標籤中,說Security Tab
我有三個視圖控制器First, Second, Third
。我從Second
視圖控制器傳遞一個字符串值到Third
視圖控制器。 selectedAlertDesc是我的NSString對象Third
視圖控制器。從另一個類獲得的NSString導致崩潰
在Third
視圖控制器:
@property (nonatomic,retain) NSString *selectedAlertDesc;
@synthesize selectedAlertDesc = _selectedAlertDesc;
在Second
視圖控制器:
Third *controller = [[Third alloc] init];
[controller setSelectedAlertDesc:[[alertArray objectAtIndex:indexPath.row] objectForKey:@"alertDesc"]];
[self.navigationController pushViewController:controller animated:YES];
[controller release];
它正常工作,直到我更改選項卡。如果我離開Third
視圖控制器頁面中的安全選項卡並在訪問其他選項卡後回來,它會崩潰。它表示,selectedAlertDesc成爲殭屍。
-[CFString stringByReplacingOccurrencesOfString:withString:]: message sent to deallocated instance 0xeb3d760
我怎樣才能解決這個問題呢?我相信我們不應該初始化合成對象。我在這裏忘了什麼嗎?
編輯:
作爲建議我用儀器檢查分配/保留歷史記錄。我得到以下幾點: - 所以在使用selectedAlertDesc
後,我保留了它。這是正確的方式嗎?它工作正常!
_selectedAlertDesc = [_selectedAlertDesc stringByReplacingOccurrencesOfString:@"opentag" withString:@"<"];
_selectedAlertDesc = [_selectedAlertDesc stringByReplacingOccurrencesOfString:@"closetag" withString:@">"];
[txtTxtVw setText:_selectedAlertDesc];
兩種可能性:使屬性'copy'而不是'retain';使用儀器及其殭屍模板來查看對象的保留歷史記錄 –
您是否實施了構造函數 - (id)init執行「Third」 – AppleDelegate
remove [controller release]; – Rupesh