gpt4 book ai didi

iphone - 切换 View EXC_BAD_ACCESS

转载 作者:行者123 更新时间:2023-12-03 20:23:21 24 4
gpt4 key购买 nike

我的类中有一个在界面生成器中制作的 UIView(除了原始 View 之外)。

@interface TimeLineGrid : UIViewController {

UIView *toggleView;

}

@property (nonatomic, retain) IBOutlet UIView *toggleView;

我也合成了。我实现了一个滑动手势,以便向上滑动时添加切换 View ,向下滑动时删除切换 View 。

-(void)swipedUp {

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0f];

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:NO];

[self.view addSubview:self.toggleView];

[UIView commitAnimations];



}

-(void)swipedDown {

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0f];

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:NO];

[self.toggleView removeFromSuperview];

[UIView commitAnimations];

}

当我向上滑动一次以及之后向下滑动时,效果很好。但是当我再次向上滑动时,它因 EXC_BAD_ACCESS 错误而崩溃。我知道这与添加 subview 时保留计数增加和删除 subview 时减少保留计数有关。有人可以进一步阐明这一点吗?如何实现此切换?

编辑:我的 View 层次结构如下:

->UIView (toggleView)
->UIView (mainView to which toggleView is being added)
-->UIToolBar

最佳答案

最有可能的是,当您调用[self.toggleView removeFromSuperview];时, View 正在被释放。我建议您稍微重构一下代码。

由于您是在 IB 中创建 View ,因此在头文件中将其声明为

IBOutlet UIView *toggleView;

不要包含属性调用或综合。由于您没有设置或获取toggleView,因此只需通过指针引用它即可。

实现中,在viewDidUnload中将指针设置为nil,并在dealloc中释放。然后,按如下方式调整切换方法:

-(void)swipedUp {
if (![toggleView superview]) {

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0f];

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:NO];

[self.view addSubview:toggleView];

[UIView commitAnimations];
}
}

-(void)swipedDown {

if ([toggleView superview]) {

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0f];

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:NO];

[toggleView removeFromSuperview];

[UIView commitAnimations];
}
}

这里,if子句将捕获用户连续向上滑动两次的事件,并且不响应第二次滑动。另请注意,这使用 toggleView 代替 self.toggleView

这应该可以解决问题。

关于iphone - 切换 View EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6228096/

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