私はObjectiveCについては非常に新しいです。私はメモリリークのための便利なコンストラクタを実験しました。
これが私のコンストラクターです
+(Myobject * ) test{
return [[self alloc] init];
}
そして私はmain.mのこのコードでそれをテストします
Myobject * __weak g = [Myobject test];
NSLog(@"%@",g);
ログが(null)と表示されることを望みます。これは、コンストラクターのポインターがスコープ外になると終了し、保持する強力なポインターがないため、arcがこのオブジェクトをメモリから削除するためです。ただ弱いポインタだけ。
しかし、ログには、オブジェクトがまだ生きているという何かが書かれています。私の理解では、コンストラクターメソッドにこのオブジェクトを保持する強力なポインターがあります。したがって、それは永遠に存在します。
では、どうすればそのポインタを取り除くことができますか?または私は何かを逃しましたか?