Причиной утечки будет следующая строка:
NSString *str = [NSString stringWithFormat:@"Century%d",i];
При использовании вспомогательных методов в Objective-C в фоновом режиме происходит следующее:
NSString *str = [[[NSString alloc] initWithFormat:@"Century%d", i] autorelease];
Не использовать alloc / init для создания слабой ссылки - заблуждение.Вы всегда являетесь владельцем созданного объекта, независимо от того, как вы его создаете.Удобный метод просто делает alloc / init и автоматически выпускает его для вас.
Вот что я бы посоветовал вам сделать, чтобы избежать утечки памяти:
- (id)init {
self = [super init];
if (self) {
self.arrayImages = [[[NSMutableArray alloc] init] autorelease];
NSAutoreleasePool *tmpPool = [[NSAutoreleasePool alloc] init];
for(int i = 1 ; i < 100 ; i++) {
NSString *str = [NSString stringWithFormat:@"Century%d",i];
NSString *path1 = [[NSString alloc] initWithString:[[NSBundle mainBundle] pathForResource:str ofType:@"jpg"]];
[self.arrayImages addObject:path1];
[path1 release];
}
[tmpPool drain];
}
return self;
}
Дайте мне знать, если это работает лучше дляyou.
-EDIT- Выделение объекта path1 и освобождение его после добавления в arrayImages.