iphone – 通知侦听器导致崩溃

iphone – 通知侦听器导致崩溃,第1张

概述我正在使用以下代码来检测/侦听iPad何时更改设备方向. [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; [[NSNotificationCenter defaultCenter] addObserver:self 我正在使用以下代码来检测/侦听iPad何时更改设备方向.

[[UIDevice currentDevice] beginGeneratingDeviceOrIEntationNotifications];       [[NSNotificationCenter defaultCenter] addobserver:self                                             selector:@selector(dIDRotate:)                                                 name:@"UIDeviceOrIEntationDIDChangeNotification"                                                object:nil];

当事情发生变化时,这会调用我的dIDRotate:方法.在我的dIDRotate:方法中,我使用UIDeviceOrIEntation orIEntation = [[UIDevice currentDevice] orIEntation];找出方向是什么,并相应地应用我的代码.

然而,在现实生活测试中,我注意到如果iPad在一个人的手中,则每秒都会调用dIDRotate :.听起来似乎是倾听iPad中的每一个小倾斜和移位,这显然在一个人的手中发生了很多(而不是在桌子上平放).

关于如何解决这个问题的任何想法?我可以更改我的代码以使用界面方向,但无论出于何种原因我都遇到了麻烦.谢谢.

* UPDATE:这个监听器是在我的UIImageVIEw子类中创建的.屏幕上有十几个或更多.我添加了[[UIDevice currentDevice] endGeneratingDeviceOrIEntationNotifications];删除实例的删除方法.这有助于解释为什么dIDRotate会出现这么多(我的错误).

但是,我已经缩小了崩溃:每当我删除这个子类的一个实例,然后旋转我的iPad时,我就崩溃了.有时我得到像[__NSArrayM dIDRotate]这样奇怪的消息:是无法识别的选择器(以及其他像UIPanVeLocity这样的奇怪对象……).删除实例后,我的监听器是否仍在侦听?

固定:谢谢你的帮助.我终于发现了什么是错的.我删除了实例而没有删除观察者并结束通知.在我的实例删除方法中添加以下代码可以解决我的问题:

[[UIDevice currentDevice] endGeneratingDeviceOrIEntationNotifications];[[NSNotificationCenter defaultCenter] removeObserver:self];
解决方法 我猜你反复添加观察者并且从不删除它们.这意味着可以针对单个事件多次调用相同的入口点.这也意味着当“自我”对象消失时,你会崩溃. 总结

以上是内存溢出为你收集整理的iphone – 通知侦听器导致崩溃全部内容,希望文章能够帮你解决iphone – 通知侦听器导致崩溃所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1007349.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存