私はこの答えを探すのにかなりの時間を費やしましたが、私が光を見るのを妨げているのは私の初心者のステータスであると推定しています.
UIScrollView
無限ページャーにするためにサブクラス化しています。その一環として、メモリを節約するために一度に 3 つの「ページ」のみを使用するつもりであるため、新しいページがいつ表示されるかを確認する必要があります。つまり、サブクラスもデリゲートとして機能させる必要があります。
https://stackoverflow.com/a/9986842/773329の指示に従いました。しかし、私はいくつかの奇妙な(私にとって)問題に直面しています。
ここでの主なものはsetDelegate:(id<UIScrollViewDelegate>)
、ユーザーのデリゲートを挿入するためにオーバーライドすると、終了しないアセンブリ内のループが発生することです。
-(void)setDelegate:(id<UIScrollViewDelegate>)delegate {
_selfDelegate->_userDelegate = delegate;
super.delegate = nil;
super.delegate = (id)_selfDelegate;
}
アセンブリ:
libobjc.A.dylib`objc_release:
0x12be090: pushl %ebp
0x12be091: movl %esp, %ebp
0x12be093: subl $8, %esp
0x12be096: calll 0x12be09b ; objc_release + 11
0x12be09b: popl %ecx
0x12be09c: movl 8(%ebp), %eax
0x12be09f: testl %eax, %eax
0x12be0a1: je 0x12be0d5 ; objc_release + 69
0x12be0a3: movl (%eax), %edx ; <<< This is where the loop is
0x12be0a5: movl 16(%edx), %edx
0x12be0a8: andl $-4, %edx
0x12be0ab: testb $2, 2(%edx)
0x12be0af: je 0x12be0c5 ; objc_release + 53
0x12be0b1: movl 1002149(%ecx), %ecx
0x12be0b7: movl %ecx, 4(%esp)
0x12be0bb: movl %eax, (%esp)
0x12be0be: calll 0x12bd08c ; objc_msgSend
0x12be0c3: jmp 0x12be0d5 ; objc_release + 69
0x12be0c5: movl %eax, (%esp)
0x12be0c8: movl $0, 4(%esp)
0x12be0d0: calll 0x12bf9d0 ; -[NSObject release]
0x12be0d5: addl $8, %esp
0x12be0d8: popl %ebp
0x12be0d9: ret
問題を引き起こしている可能性のあるものはありますか?