1
私はリーク機器を初めて使用しています。 私は、ソースコードを見たとき、それはipadでリーク機器を解析する際の問題
- (id) initWithFrame: (CGRect) frame
{
[self LoadMoviePlayer];
**self= [super initWithFrame:frame];**
if (self==[super initWithFrame:frame])
{
CAEAGLLayer* eaglLayer = (CAEAGLLayer*) self.layer;
eaglLayer.opaque = YES;
- (void) applicationDidFinishLaunching: (UIApplication*) application
{
CGRect screenBounds = [[UIScreen mainScreen] bounds];
m_window = [[UIWindow alloc] initWithFrame: screenBounds];
**m_view = [[GLView alloc] initWithFrame: screenBounds];**
[m_window addSubview: m_view];
[m_window makeKeyAndVisible];
}
は、問題を解決するために次に何をすべきかわかりません....これらの二つの太字の文で示して、私のコードで2つのリークを取得しています。
私はdealloc関数でm_viewを公開していますが、理由はわかりませんが、 "self = [super initWithFrame:frame];問題が解決されます。私はself.loadmoviePlayerが呼び出された時点で自己価値とnullではないことを確認しています。誰も私の問題について考えています。 – LebRon
m_viewの割り当ては保持カウントを1にし、ウィンドウのaddSubViewは2に設定します。コンポーネントのdeallocは1に解放しますが、ウィンドウから削除しない限りウィンドウを解放しないで、保持カウントは1のままです。 – Fuggly
また、そのloadMoviePlayer行の背後にあるアイデアは、if()ブロック内の[super initWithFrame:]を正確に実行した後です。完全に初期化されていないオブジェクト(ここではまさにそうである)にオブジェクトのインスタンスを作成した場合、その動作は「そのようにしたくない」というように定義されます。あなたはすでにif()ブロック内のレイヤのプロパティを設定していますが、そのif()ブロックにそのムービープレーヤをロードしないのはなぜですか? – Fuggly