gpt4 book ai didi

iphone - "EXC_BAD_ACCESS"当在 tableView 和 mapView 之间切换太快时

转载 作者:行者123 更新时间:2023-11-28 19:18:19 25 4
gpt4 key购买 nike

我有一个带有按钮的 tableView,用于推送 mapView。推和回 Action 通常工作正常。如果我在这两个 View 之间快速切换,将出现“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

ma​​in.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

当我切换回 tableViewannotationView 正在下降时,它通常会崩溃。

最佳答案

您是否已将自己从 map View 的委托(delegate)中删除?

self.mapview.delegate = nil;

尝试在 viewWilldisappear 或任何你认为必要的时候移除它,因为如果你已经推送了一个 View Controller 并且稍后将返回到 View ,你以后可能需要它。

简而言之,当您的 View 无法响应委托(delegate)时将其删除,这就是您获得 EXC_BAD_ACCSS 的原因。它向您的 View 发送了一条消息,但它已从内存中释放。

关于iphone - "EXC_BAD_ACCESS"当在 tableView 和 mapView 之间切换太快时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10893808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com