0

以下の self.listOfCustDetail と self.listOfCustomer にメモリ リークがあります。

-(void) calCustList {
    NSArray   *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString  *documentsDirectory = [paths objectAtIndex:0];  
    NSString  *plistPath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"customer.plist"];

    self.listOfCustDetail = [[[NSMutableArray alloc] init] autorelease];
    self.listOfCustomer = [[[NSMutableArray alloc] init] autorelease];
    self.customers =  [[[NSMutableDictionary alloc] initWithContentsOfFile:plistPath] autorelease];

    [self.listOfCustomer removeAllObjects];
    [self.listOfCustDetail removeAllObjects];

    [self.listOfCustomer addObject:@"新紀錄"];
    [self.listOfCustDetail addObject:@""];

    for (id key in self.customers) {
        NSString *s = [NSString stringWithFormat:@"%@,%@,%@,%@", [[self.customers objectForKey:key] objectAtIndex:0], [[self.customers objectForKey:key] objectAtIndex:1], [[self.customers objectForKey:key] objectAtIndex:2], [[self.customers objectForKey:key] objectAtIndex:3]];
        [self.listOfCustomer addObject:key];
        [self.listOfCustDetail addObject:s];
    }  
}
4

2 に答える 2

0

配列を解放する必要がないので、プロジェクトでARC(自動参照カウント)を有効にすることをお勧めします

于 2013-02-28T12:06:45.137 に答える
0

プロパティはどのように定義されていますか? 彼らは保持しますか?それらが保持されている場合、表示しているコードに実際の間違いはありません。

そのメソッドはどのくらいの頻度で呼び出されますか? 非常に頻繁に呼び出される場合は、カスタムを使用できますNSAutoreleasePool

また、新しく初期化された配列では、次の 2 行は必要ありません。

[self.listOfCustomer removeAllObjects];
[self.listOfCustDetail removeAllObjects];

実際のソースコードを表示していますか?

于 2012-04-10T15:48:29.540 に答える