アナライザでコンパイルすると、いくつかのメッセージが表示されます。Analyzerからの「Incorrect decrement」および「Potential leak」メッセージ
@property (nonatomic, retain) SyncServicePrimary *syncAndCartOne;
@property (nonatomic, retain) SyncServiceSecondary *syncAndCartTwo;
この方法はapplicationDidBecomeActive
から呼び出されると、私は、「割り当てられたオブジェクトの潜在的な漏れ」を得る:私は、これらのプロパティは宣言しました。
-(void)makeTheCartObjectsForCountry:(NSString*)country_key{
self.syncAndCartOne = [[SyncServicePrimary alloc] init];
self.syncAndCartTwo = [[SyncServiceSecondary alloc] init];
}
これはapplicationWillResignActive
で呼び出されます。ここで私は "オブジェクトの参照カウントの不正な減少"を取得します。
-(void) removeTheCartObjects{
[self.syncAndCartOne release];
self.syncAndCartOne = Nil;
[self.syncAndCartTwo release];
self.syncAndCartTwo = Nil;
}
私はautorelease
にオブジェクトを設定した場合、エラーが表示されなくなりますが、私は、アプリ自体を隠したときにオブジェクトが解放されたいです。
これは私が正しくやっていることですが、アナライザーが開始点と終了点を見分けるにはあまりにも遠くに分割されていますか?
release
とalloc
サイクル(私はPHPとC#から来ています)に関する単純な概念が欠けている可能性があります。
注意。オブジェクトポインタの場合は、代わりに 'nil'を使うべきです。 –
お気軽に、ありがとうございます。 –
私はクラスのインスタンスで無制限チェックをしている場合は、家庭でそれを駆動するには、 "== Nil"を使うことは "== nil"と同じではありませんか? –