gpt4 book ai didi

ios - iPad 应用程序在方向更改时崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:13 24 4
gpt4 key购买 nike

我正在开发 iPad 应用程序。我允许横向和纵向模式。我的 UI 在纵向模式下很好,但是当我将其更改为横向模式时,我的 UI 变得一团糟。我看到了一些与此相关的 SO 帖子,并在我的 UIView 的 initWith... 中添加了以下代码。

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(abc)
name:UIDeviceOrientationDidChangeNotification
object:nil];

执行此操作后,我的 UI 在纵向模式下工作正常。当我将它更改为横向模式时,我的用户界面很好。但是在我将其改回纵向模式后,我的应用程序崩溃了。我在 SO 上阅读了一些与应用程序崩溃相关的帖子,并了解了仪器。我启用了僵尸,发现一条消息正在发送到已释放的对象,这条消息来自 NSNotificationCenter。

除了注册我的设备之外,我还需要处理其他事情吗?此外,有什么方法可以将实现从 UIView 更改为 UIViewController 并实现 UIViewController 具有的关于设备方向的方法?请让我知道完成此操作需要遵循的步骤。谢谢!

最佳答案

您在哪里注册通知?当您要更改方向时(在 prepForSegue 或 willAnimateRotationToInterfaceOrientation 中取决于您的设置),您需要删除观察者,以防止向不再有效的对象发送消息。如果您在 viewDidAppear/viewWillAppear 中注册,您也不希望堆积多个通知。

删除观察者使用:

[[NSNotificationCenter defaultCenter] removeObserver:self];//removes all notifications for that object (the way I've used it before)

或者如果你想具体一点,做类似的事情:

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:[UIDevice currentDevice];//remove just that notification

关于ios - iPad 应用程序在方向更改时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14878547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com