1

drawRectに問題があり、UIViewカスタムクラスの新しいインスタンスを作成します。

私の質問は:drawrectをどのように使用できますか?UIScrollViewを使用してUIViewControllerを作成し、このUIScrollView内に約50のUIViewを作成しました。各UIViewは、それぞれがdrawrectを使用して3つの要素(カスタムUIView)内に作成します。

- (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