0

応答を変数に収集しています

-(NSMutableDictionary *)getCombineIdAndNames{    

NSMutableDictionary *lObjCombineIdAndNamesArrayPtr = [[NSMutableDictionary alloc] init];

   [lObjCombineIdAndNamesArrayPtr setObject:lObjtempNamePtr 
                                       forKey:lObjtempIdPtr];
   return [lObjCombineIdAndNamesArrayPtr autorelease];
}

これはメモリリークを引き起こしています

gObjAppDelegatePtr.m_cObjCombineIdNameDictPtr = [gObjAppDelegatePtr.m_cDbHandler getCombineIdAndNames];

gObjAppDelegatePtr.m_cObjCombineIdNameDictPtr. これはコピー型のプロパティです。しかし、それでもメモリリークが発生します。直し方教えてください。

4

1 に答える 1

0

getCombineIdAndNamesまったく問題ありません。あなたはalloc辞書を調べて、戻る前にそれを自動解放しています。そこには何も問題はありません。

これは、メモリリークがインスタンスによって引き起こされていることを示唆していgObjAppDelegatePtrます。プロパティを解放していないか、オブジェクト全体がリークされている可能性があります。

余談ですが、改善できることの 1 つgetCombineIdAndNamesは、便利なコンストラクターを使用して、 NSMutableDictionaryすべての alloc/release 呼び出しを完全に回避することです。新しい Obj-C コンテナー構文を使用することもできます。

-(NSMutableDictionary *)getCombineIdAndNames{    
    NSMutableDictionary *lObjCombineIdAndNamesArrayPtr = [NSMutableDictionary dictionary];
    lObjCombineIdAndNamesArrayPtr[lObjtempIdPtr] = lObjtempNamePtr;
    return lObjCombineIdAndNamesArrayPtr;
}
于 2013-03-19T12:36:59.960 に答える