1

我在使用 drawRect 时遇到了一些问题,并创建了一个 UIView 自定义类的新实例。

我的问题是:我如何使用drawrect?我用 UIScrollView 创建了一个 UIViewController,在这个 UIScrollView 里面有大约 50 个 UIView。每个 UIView 在 3 个元素(自定义 UIViews)内创建,每个元素都带有一个 drawrect:

- (void)drawRect:(CGRect)rect 
{
    CGContextRef c = UIGraphicsGetCurrentContext();
    CGContextClearRect(c, self.bounds);

    CGContextSetStrokeColorWithColor(c, color.CGColor);
    CGContextSetLineCap(c, kCGLineCapRound);
    CGContextSetInterpolationQuality(c, kCGInterpolationHigh);

    CGContextSetLineWidth(c, thickness);
    CGContextAddArc(c, self.frame.size.width/2, self.frame.size.height/2, radius, angleIni*M_PI/180, angleEnd*M_PI/180, 0);
    CGContextStrokePath(c);
}

起初它就像一个魅力,但是当我尝试删除这个 UIViewController 并再次创建它时,我得到了一个 EXC_BAD_ACCESS。

如果我删除 drawrect 代码,一切都会重新开始工作,没有 EXC_BAD_ACCESS。所以我得出结论,我的问题是我的 drawrect 方法。

有什么正确的方法可以真正删除我的 UIviewController 吗?在 dealloc 上,我将删除 UIScrollView 中的所有 UIView 并将其设置为 nil,此外我还将 UIScrollView 设置为 nil,例如:

for (UIView *item in MyUICscrollView.subviews)
{
  [item removeFromSuperview];
  item = nil;
}
MyUICscrollView = nil;

有人有同样的问题吗?

4

0 回答 0