Я обнаружил очень странную проблему в 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 для создания экземпляра карты и ссылки на его делегат, т.е. First Responder.
Ничего не добавлено в файл m, кроме автоматически сгенерированных методов, унаследованныхUIViewController.
Создание экземпляра MapViewController выглядит следующим образом:
MapViewController *mapView = [[MapViewController alloc]init];
[self.view addSubview:mapView.view];
Таким образом, происходит сбой программы при загрузке вида карты и прокручивании карты или увеличении / уменьшении.Main будет аварийно завершен с EXE_BAD_ACCESS, что означает, что он обращается к недопустимой памяти.
Я профилировал его с помощью инструментов и проверил на наличие зомби, и выясняется, что просмотр карты перевыпускает объект, и он вылетает - как видно из img.
Журнал зомби http://dl.dropbox.com/u/2250562/xcode4.2-Mapview-Crash.png! [Журнал зомби] [1]
Я не думаю, что я делаю что-то не так, поэтому я хотел бы знать, если кто-то из вас может иметьидея решения или хотите проверить, если вы можете воспроизвести тот же результат.Моим следующим шагом будет тестирование в новом проекте без ARC, чтобы увидеть, меняет ли это проблему.
Информация о системе: Xcode 4.2 Сборка 4D199 с использованием ARC -> Автоматический подсчет ссылок
Приложение протестировано вСимулятор для IOS 4.3