UIScrollView 的异常崩溃问题

    self.scrollView = [[UIScrollView alloc] init];
    self.scrollView.showsVerticalScrollIndicator = NO;
    self.scrollView.showsVerticalScrollIndicator = NO;
    self.scrollView.scrollsToTop = NO;
    [self addSubview:self.scrollView];

问题
上述代码可以发现 showsVerticalScrollIndicator写了两遍,这有可能属于误操作,本意是写self.scrollView.showsHorizontalScrollIndicator.

解析
当这种情况出现时,我们要在self.scrollView.layer添加视图前,(如果每次都需要进行添加子控件)正常的操作是先清除之前视图上的控件,从新添加,防止控件不停的被添加,导致程序内存增加,出现问题。

  • 在未执行[self addSubview:self.scrollView];
    前打印self.scrollView.layer.sublayers 控制台都会输出nil,我们还没向self.scrollView.layer添加任何东西,属正常现象。

  • 执行之后[self addSubview:self.scrollView];会发现self.scrollView.layer.sublayers突然有值了,(有可能看不到有值的现象,有可能还是nil)

这时程序是可以正常运行的,不会有任何问题。

  • 当向self.scrollView.layer 添加视图前的代码是这样写的。
self.scrollView.layer.sublayers = nill;

[self.scrollView.layer addSublayer:textLayer];

执行到self.scrollView.layer.sublayers = nill; 断点打印控制台会出输出

UIScrollView 的异常崩溃问题_第1张图片
Snip20181102_1.png

这时程序正常运行,但是当你点击后视图后会出现崩溃。直接崩到main函数。


Snip20181102_2.png

问题的关键是self.scrollView.showsVerticalScrollIndicator = NO;写了两遍导致的问题,修改成 self.scrollView.showsHorizontalScrollIndicator = NO,问题就解决了。

你可能感兴趣的:(UIScrollView 的异常崩溃问题)