我有一個帶有按鈕的tableView來推送mapView。推送和回退操作通常工作正常。如果我在這兩個視圖之間快速切換,則會出現「EXC_BAD_ACCESS」錯誤。當在tableView和mapView之間切換太快時出現「EXC_BAD_ACCESS」
MapViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
self.mapView.delegate = self;
UIButton *btnL = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 40.0, 40.0)];
[btnL setImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal];
[btnL addTarget:self.navigationController action:@selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchDown];
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:btnL] autorelease];
[btnL release];
self.whereAmIAnnotation = [[[WhereAmIAnnotation alloc] init] autorelease];
if (!self.mapView || !self.whereAmIAnnotation) {
NSLog(@"mapview : %@", self.mapView);
NSLog(@"whereAmIAnnotation : %@",self.whereAmIAnnotation);
// will never enter in to here
}
[self.mapView addAnnotation:self.whereAmIAnnotation];
}
如果我評論[self.mapView addAnnotation:self.whereAmIAnnotation];
,沒有 「EXC_BAD_ACCESS」 了。
任何答案和意見將不勝感激。提前致謝!
編輯2
的main.m
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
// "EXC_BAD_ACCESS" error message shows here
}
}
編輯3:
的whereAmIAnnotation這裏宣稱:
MapViewController.m
@interface AddrCoordinateAdjustMapViewController()
@property (retain) WhereAmIAnnotation *whereAmIAnnotation;
@end
@implementation MapViewController
@synthesize whereAmIAnnotation;
編輯4:
錯誤消息是如下:
2012-07-30 15:56:19.735 myApp[13584:707] *** -[MapViewController respondsToSelector:]: message sent to deallocated instance 0x10195e80
它通常當我切換回tableView
而annotationView
正在下降崩潰。
您是否嘗試插入斷點並檢查self.mapView和self.whereAmIAnnotation的值? 試着做一個簡單的檢查:if(self.mapView && self。whereAmIAnnotation)... –
你試過調試過嗎?設置一個異常斷點來查看崩潰正在發生哪一行? – Krishnabhadra
你如何設置self.mapView?它是一個IBOutlet嗎?你是否通過代碼來做到這一點。你能展示你如何設置和釋放它嗎? – iTukker