1

こんにちは 私は と で働いていCAShapeLayerますCGPath。私はジグソーを描いて追加していscrollviewます.リロードボタンを付けてパフォーマンスを確認しています. リロードすると、以前のすべてのレイヤーが から削除されscrollviewます。そして、しばらくするとクラッシュします。

ゾンビは、レイヤーを削除する原因を教えてくれます。それが問題です。コードに何か問題がありますか?ここにあります :

NSArray* layerArray = [[self.scrollView.layer sublayers]copy];

    for (int i = 0; i < layerArray.count; i++) {
        A3JigsawView* aJigsawView = [layerArray objectAtIndex:i];
        [aJigsawView removeFromSuperlayer];
    }
    self.scrollView.layer.sublayers = nil;

    prevWidth = 0;
    prevHeight = 0;

助けてください。ありがとうございます。

4

2 に答える 2

5

ですself.scrollView.layer.sublayers = nil。すべてのサブレイヤーを無差別に削除すると、iOS 7 で厄介なクラッシュが発生します。これは、プログラムの実行のずっと後の段階で発生する可能性があります。と の両方rootLayer.sublayers = nilを使用して、これを徹底的にテストしました[rootLayer.sublayers makeObjectsPerformSelector:@selector(removeFromSuperlayer)]。システムが作成したレイヤーが台無しになっているはずです。

独自のレイヤー配列を保持し、自分で削除する必要があります。

[myArrayOfLayersIAddedMyself makeObjectsPerformSelector:@selector(removeFromSuperlayer)];
于 2014-01-21T13:08:22.347 に答える