【发布时间】:2011-10-25 22:35:27
【问题描述】:
我在 MKMapView 中发现了一个非常奇怪的问题,我认为这可能是新 xcode 4.2 和 ARC(自动引用计数)中的一个错误。
我创建了一个非常基本的 UIViewController 类:MapViewController,它实现了协议:
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>
@interface MapViewController : UIViewController <MKMapViewDelegate>
@property (strong, nonatomic) IBOutlet MKMapView *mapView;
我使用 xib 文件来实例化 mapview 并链接到它的委托,即 First Responder。
除了 UIViewController 继承的自动生成的方法之外,m 文件中没有添加任何内容。
MapViewController 的实例化如下:
MapViewController *mapView = [[MapViewController alloc]init];
[self.view addSubview:mapView.view];
因此,当加载地图视图并滚动地图或放大/缩小时,程序会崩溃。 Main 将崩溃并出现 EXE_BAD_ACCESS,这意味着它正在访问非法内存。
我用仪器对其进行了分析并检查了 Zombies,结果发现 mapview 过度释放了一个对象并且它崩溃了 - 正如在 img 中看到的那样。
Zombie log http://dl.dropbox.com/u/2250562/xcode4.2-Mapview-Crash.png ![僵尸日志][1]
我不认为我做错了什么,所以我想知道你们中是否有人有解决方案的想法或想测试是否可以重现相同的结果。 我的下一步是在没有 ARC 的新项目中进行测试,看看这是否会改变问题。
系统信息: Xcode 4.2 使用 ARC 构建 4D199 -> 自动引用计数
在 IOS 4.3 模拟器中测试的应用
【问题讨论】:
标签: objective-c ios crash mkmapview mapkit