gpt4 book ai didi

ios - "Destroying"委托(delegate)后退按钮(或滑动)[UINavigationController]

转载 作者:行者123 更新时间:2023-11-29 12:37:48 24 4
gpt4 key购买 nike

我的问题:
我有一个导航 Controller 。当我导航到应用程序的特定部分时,我会初始化此代码:http://rdsquared.wordpress.com/2012/10/19/circular-scrolling-inertia/

有了这个我就有了一张图片,我可以用手指旋转它。它使用自定义委托(delegate)。如果图像旋转,然后我按下后退按钮(或向后滑动),应用程序就会崩溃。

代码中是这样写的:

// Taking a risk here that the delegate will not change or be destroyed while we're in the middle of animating the deceleration
if (self.delegate != NULL && [self.delegate respondsToSelector:@selector(rotationDidChangeByAngle:)]) {

当应用程序崩溃时,它会在此时崩溃:(因为委托(delegate)在用户返回时被销毁)

[self.delegate rotationDidChangeByAngle:changeThisFrame];

我正在尝试理解和重写代码,这就是为什么我一直引用其他人的源代码。

我想做什么:
我希望能够旋转图像,然后在它减速时按下后退按钮。 (然后让图像停在屏幕外)

谁能想出解决委托(delegate)问题的方法?请查看 Ryan 的源代码以获取更多信息。非常感谢。

最佳答案

.h file ,他将委托(delegate)标记为 unsafe_unretained,呃,不安全。如果将其更改为 weak,则委托(delegate)将在解除分配时自动消失,这应该可以防止崩溃。

或者,您的委托(delegate)对象可以将循环 View 的 delegate 属性设置为 nil,例如,在其 dealloc 方法中,以获得相同的结果。

关于ios - "Destroying"委托(delegate)后退按钮(或滑动)[UINavigationController],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25797484/

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