わかりました、私は初めてではありませんObjective-C
が、今まで見たことのない奇妙なバグに遭遇しました。多分私は小さな間違いを犯しただけで、あなたはそれを見ることができます.
私の関数の 1 つで、次の方法でカスタム ビュークラスから新しいオブジェクトを作成することから始めます。
[buttonsBackground removeFromSuperview];
self.buttonsBackground = [[[PostCommentButtonsBackground alloc] initWithFrame:self.contentView.bounds] autorelease];
buttonsBackground.delegate = self;
buttonsBackground
しかし、デバッガーでこのブロックを飛び越えると、デバッガーはそれが nil-pointer であると主張します。しかし、NSLog
後で権利を追加する
NSLog(@"%@",self.buttonsBackground);
まだ行を印刷します
<PostCommentButtonsBackground: 0x7bd27a0; frame = (0 0; 320 82); layer = <CALayer: 0x6e688b0>>
これは明らかに、nil にはなり得ないことを意味します。これがどのように可能になるのか、誰にも考えがありますか?
GDB ではなく、LLDB デバッガーを使用しています。プロパティbuttonsBackground
は次のように宣言されます
@property(nonatomic, retain)PostCommentButtonsBackground *buttonsBackground;
そのため、保持の欠落も当てはまりません。
編集:わかりました、まったく同じ問題を抱えているのは私だけではないことがわかりました。同じ問題を抱えている別の人がいます。
とにかく、この投稿を開いたままにしておきます。他の投稿で、開発者がメモリ管理で悪い仕事をしたと主張し続けたからです。私の投稿では、実際にはそうではないことがわかります。