[[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 – 通知侦听器导致崩溃所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)