簡要介紹我正在嘗試做什麼。EXC_BAD_ACCESS在桌面之間來回切換時出錯
我使用的tableView:didSelectRowAtIndexPath方法:這是從捕像這樣該視圖行選擇我的UITableViewController子類中,方法...
//..... inside tableView:didSelectRowAtIndexPath:
if (indexPath.section == 0) {
//--- Get the subview ready for use
VehicleSearchResponseTableViewController *vehicleSearchResponseTableViewController = [[VehicleSearchResponseTableViewController alloc] initWithNibName:@"VehicleSearchResponseTableViewController" bundle:nil];
// ...
//--- Sets the back button for the new view that loads
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style: UIBarButtonItemStyleBordered target:nil action:nil] autorelease];
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:vehicleSearchResponseTableViewController animated:YES];
if(indexPath.row == 0) {
vehicleSearchResponseTableViewController.title = @"Mans";
EngineRequests *engineRequest = [[EngineRequests alloc] init];
[engineRequest getMans];
[engineRequest release];
}
if(indexPath.row == 1) {
//.... etc etc
正如你可以在這個方法中看到我設置了幾個將新視圖推入視圖堆棧並更改後退按鈕文本,然後我會捕獲不同的行,然後在nsobject的子類中啓動一個方法,以便讓我的所有連接/請求都繼續運行。
在我的NSObject裏面我有幾種不同的方法可以在UITableViewController上選擇不同的單元格,基本上他們指定了不同的字符串,然後初始化我的ASIHTTPRequest包裝器來連接到php腳本並捕獲所有的數據將從數據庫中回來.. NSObject看起來像這樣。
//.... NSObject.m
- (IBAction) getMans
{
NSString *mansString = [[NSString alloc] initWithString:@"mans.php"];
[self grabURLInBackground:mansString];
[manusString release];
}
//....cont....
//--- Connect to server and send request ---------------->>
- (IBAction)grabURLInBackground:(NSString *)setUrlString
{
NSString *startURL = [NSString stringWithFormat:@"http://127.0.0.1:8888/CodeTest/%@", setUrlString];
NSURL *url = [NSURL URLWithString:startURL];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request startAsynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
NSString *responseString = [request responseString]; //Pass request text from server over to NSString
NSData *responseData = [responseString dataUsingEncoding:NSUTF8StringEncoding]; //Create NSData object for Parser Delegate and load with responseString
NSLog(@"stuff %@",responseData);
}
- (void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = [request error];
NSLog(@"%@", error);
}
在這裏,我想通過我從requestFinished方法找回了對新推的UITableView ..的數據。但是我有一個錯誤,我能夠遠遠得到這一點,我需要解決之前...如果我運行模擬器並在視圖之間來回切換(主單元格爲UITableViewController,然後在彈出的視圖中我想放置數據),應用程序將會崩潰並彈出一個錯誤main。 m線程1:程序接收信號EXC_BAD_ACCESS ..我只是不知道是什麼原因造成的,因爲從我可以告訴我的代碼不是那麼糟糕。
另外,當我調試我的應用程序時,我注意到,一旦grabURLInBackground方法已完成,它彈回到getMans方法,然後返回到UITableViewController並繼續通過if語句,完全忽略requestFinished和requestFailed方法,而我只是無法弄清楚爲什麼。
我想我不知道我是否在正確的地方調用了我需要使用的方法和函數,所以如果您對如何改進或者如果您知道我的錯誤將在何處形成任何建議或答案將不勝感激。
只是一個快速的說明,以同意使用儀器或NSZombiesEnabled的東西來尋找殭屍也將是一個很好的方式來開始調試這種事情! – gdawg
啊,我會研究這一點,我一直在使用產品>分析和看到一些潛在的內存泄漏,我已經修復..但會尋找這個殭屍的東西。 –