拖动UIScrollView时EXC_BAD_ACCESS

时间:2012-11-27 20:23:23

标签: objective-c ios uiscrollview uiscrollviewdelegate

在控制器中我正在创建一个UIScrollView。我正在尝试将此viewcontroller设置为UISCrollview委托,并实现委托的方法,以便(稍后)添加UIPageControl。

我已经阅读了一下,在SO上发现了this linkthis other link和其他内容,以及网上的一些有用的教程,但我不明白我做错了什么。每次滚动UIScrollView时,应用程序都会因EXC_BAD_ACCESS错误而崩溃。

这是我的.h文件

#import <UIKit/UIKit.h>

@interface StatsViewController : UIViewController <UIScrollViewDelegate> {
     UIScrollView *scrollView;
     UIPageControl *pageControl;
}

@end

然后在我的.m文件中,我正在创建scrollview并试图像这样定义委托方法:

- (void)viewDidLoad {
     [super viewDidLoad];
     NSInteger boxWidth = self.view.frame.size.width;
     NSInteger boxHeight = 412;
    scrollView = [ [UIScrollView alloc] initWithFrame:CGRectMake(0, 0,      self.view.frame.size.width, boxHeight)];
    scrollView.pagingEnabled = TRUE;
    scrollView.delegate = self;

     NSInteger numberOfViews = 2;

    StatBreatheCounter *breatheCounter = [ [StatBreatheCounter alloc] init];
    breatheCounter.view.frame = CGRectMake(0, 0, boxWidth, boxHeight);
    [scrollView addSubview:breatheCounter.view];

    BreatheLocationViewController *breatheLocation = [ [BreatheLocationViewController alloc] init];
    breatheLocation.view.frame = CGRectMake(320, 0, boxWidth, boxHeight);
    [scrollView addSubview:breatheLocation.view];

     scrollView.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews, boxHeight);
     [self.view addSubview:scrollView];

}

 - (void)scrollViewDidScroll:(UIScrollView *)sender {
     NSLog(@"RUNNING");
 }

...但每次我在滚动视图上滑动时,应用程序都会崩溃。 现在,我对Ojective-C非常感兴趣,但我觉得我错过了一些东西。浏览所有关于委托可以提前解除分配的事实,当用户触发操作时,没有人正在处理该方法(抱歉解释:))。 ...但是如果代表它是viewcontroller本身,它怎么能被释放?

正如你所看到的,我很困惑:( 任何帮助都会非常感激

- 编辑: 我将在此处包含解决方案,感谢您的意见和回答。 当我张贴了我的问题,我是如此确信,误差为我创造的UIScrollView并设置其委托的方式,我不知道这个问题是未来的(如一切都表明,BTW :))我被分配StateViewController在其父级中没有声明对它的任何“强”引用(再次,对不起解释,我真的是一个n00b)。 非常感谢您帮助我指出正确的方向

1 个答案:

答案 0 :(得分:2)

看起来你在滚动期间丢失了对委托的引用。我会查看StatsViewController或其他可能导致其被解除引用的事件的任何其他发布事件。