У меня возникают проблемы с выпуском объектов. Чтобы объяснить это лучше, я включил свой код ниже.Управление памятью какао NSArray с объектами
NSTask *task = [NSTask new];
NSTask *grep = [NSTask new];
NSPipe *pipe = [NSPipe new];
[task setStandardError: pipe];
[grep setStandardInput: pipe];
[pipe release];
pipe = [NSPipe new];
[grep setStandardOutput: pipe];
[task launch];
[grep launch];
NSString *string = [[[[[[NSString alloc] initWithData: [[[grep standardOutput] fileHandleForReading] readDataToEndOfFile] encoding: NSASCIIStringEncoding] autorelease] componentsSeparatedByString: @" "] objectAtIndex: 3] substringToIndex: 8];
NSMutableDictionary *dict = [NSMutableDictionary new];
[dict setObject: string forKey: @"myKey"];
[records addObject: dict];
[dict release];
[task release];
[grep release];
[pipe release];
Как я могу освободить строку и есть ли какие-либо другие утечки? Кроме того, если я удаляю все из массива records
с removeAllObjects
, все ли выпущено нормально? Массив никогда не должен выпускаться и быть доступным в любое время, я просто беспокоюсь о его объектах.
Редактировать: Единственная обнаруженная утечка связана с NSPipe и должна быть зафиксирована в коде.
Спасибо за помощь!
ОК, ваш код для назначения строки является просто орехом. Разбить его на более мелкие линии, а утечки и т. Д. Станут намного более очевидными. –