![](/img/trans.png)
[英]crash on setUserTrackingMode with MKMapView when zoomed in
[英]Crash when loading MKMapView
加载MKMapView
时发生MKMapView
崩溃。 发生的模式是当我在一个视图中打开ABPeoplePickerNavigationController时,这又触发了UINavigationController
委托方法。
保存/不保存后,我转到另一个视图-可以正常工作。 下一个视图-工作正常。 但是,当我使用MKMapView
进入视图时,它崩溃了。
没有其他观点有任何问题。 只有加载MKMapView
的视图MKMapView
崩溃,并显示以下日志
*** -[UINavigationBar barStyle]: message sent to deallocated instance
我已经在代码中注释了加载mapview的部分,然后工作正常。 因此,似乎在加载mapview时,我的导航栏被释放了。 但是我无法理解的是,应用程序中的其他视图没有任何问题,只有带有mapview的视图崩溃了。 我尝试了不同的测试模式,并确保其他所有视图都没有问题。
该应用程序不会在模拟器中崩溃。 它仅在设备上崩溃。 为什么仅在加载mapview的视图中而不在其他视图中出现此问题?
我尝试进行分析以分析我的问题。 这是我发现的,但没有太大帮助。
我曾经也有过一样的问题。
这是ABPeoplePickerNavigationController上的泄漏问题。 您必须确保它不会被释放。
我声明它是一个强大的属性,以确保它不会被释放,并且可以正常工作:)
嗯,对此还有一个更简单的解决方案。 实际的问题是使用ABPeoplePickerNavigationController作为单例对象,将其委托设置为视图控制器,然后关闭视图控制器。 因此,在我的情况下,有效的解决方案是:
(void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker {peoplePicker.peoplePickerDelegate = nil; //在解雇自己之前清除委托[self.navigationController dismissViewControllerAnimated:YEScomplete:nil]; }
(BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker应该继续进行SelectingPerson:(ABRecordRef)person属性:(ABPropertyID)属性标识符:(ABMultiValueIdentifier)identifier {[self displayPerson:person]; peoplePicker.peoplePickerDelegate = nil; //在解雇自己之前清除委托[self.navigationController dismissViewControllerAnimated:YEScomplete:nil]; 返回否; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.