"销毁"委托后退按钮(或滑动)[UINavigationController]

时间:2014-09-11 21:47:32

标签: ios objective-c uinavigationcontroller delegates rotation

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

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

在代码中它说:

// 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:)]) {

当应用程序崩溃时,它会在此时崩溃:(因为当用户返回时代理被破坏)

[self.delegate rotationDidChangeByAngle:changeThisFrame];

我正在尝试理解和重写代码,这就是为什么我一直指的是另一个人的源代码。

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

任何人都可以提出代理问题的解决方法吗?请查看Ryan的源代码以获取更多信息。非常感谢你。

1 个答案:

答案 0 :(得分:1)

.h file中,他将委托标记为unsafe_unretained,呃,不安全。如果您将其更改为weak,则代理将在取消分配时自动填写,这样可以防止崩溃。

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