我在使用 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;
有人有同样的问题吗?