まだ可能ですか?つまり、弱いポインターは自動的に null になります。強いポインターは、別の場所を指している場合にのみ割り当てを解除します。
割り当て解除されたオブジェクトを指すというエラーがまだ発生する可能性はありますか?
__unsafe_unretained は、自分が何をしているのかを知っている人によって行われます。だから、それは本当に間違っているわけではありません。
まだ可能ですか?つまり、弱いポインターは自動的に null になります。強いポインターは、別の場所を指している場合にのみ割り当てを解除します。
割り当て解除されたオブジェクトを指すというエラーがまだ発生する可能性はありますか?
__unsafe_unretained は、自分が何をしているのかを知っている人によって行われます。だから、それは本当に間違っているわけではありません。
__autoreleasing と @autoreleasepool に注意してください。コンパイラは、autorelease プールを空にするときに __autoreleasing 変数の値を保持できるほど賢くありません。これには、NSError** パラメータを持つメソッド内の @autoreleasepool が含まれます。
__block __autorelease 変数に注意してください。これには、NSError** 変数を設定するブロック オブジェクトが含まれます。一部のブロックベースの API はブロック呼び出しを自動解放プールにラップするため、上記と同じ欠陥が発生します。
事実上安全でない、保持されていない API に注意してください。たとえば、AppKit と UIKit の多くのデリゲート ポインターは安全ではなく保持されず、ゼロ化が弱いわけではありません。オブジェクト グラフを正しく配置しないと、デリゲート オブジェクトの割り当てが解除され、キットがそれを使用しようとしたときにクラッシュします。
オブジェクト ポインターのヒープ割り当て C 配列に注意してください。正しく行うことは可能ですが、注意しないとリークやクラッシュが発生します。
スレッドの競合に注意してください。マルチスレッドのバグがある場合は、すべての賭けが無効になります。
__unsafe_unretained、CFTypeRefs、malloc() されたメモリ