繁体   English   中英

加载MKMapView时崩溃

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM