もし私がこれをしたら
Object * myObject = [[Object alloc]init];
[myObject release];
次の行にオブジェクトを割り当てることについて何か問題がありますか
myObject = [[Object alloc]init];
また?
もし私がこれをしたら
Object * myObject = [[Object alloc]init];
[myObject release];
次の行にオブジェクトを割り当てることについて何か問題がありますか
myObject = [[Object alloc]init];
また?
これは安全です。
その理由は、それはオブジェクトでmyObject
はなく、オブジェクトへの参照 (または正確にしたい場合はポインター) だからです。つまり、2 つの完全に独立したオブジェクトがあることを意味しますが、最初のオブジェクトへの参照を忘れています。
全く問題無い。
[myobject release];
が指すオブジェクトを解放しますmyObject
。
後で、別のオブジェクトmyobject = [[Object alloc] init]
を指摘します。myobject
それは何も悪いことではありません。これが、最初のオブジェクトをリークしないようにする方法です。
ただし、リリースされたオブジェクトを技術的に再度割り当てることはありません。古いポインターを再び使用しているだけです。
Object * myObject = [[Object alloc]init];
myObject = [[Object alloc]init];
作成した最初のオブジェクトがリークします。
はい、もちろん。この手法は、一度宣言されたオブジェクトを新しいオブジェクトとして再割り当てすることで再利用できるローカルメソッド変数で特に役立ちます..!!