У вас есть одна ( действительно две ) проблема, но главная проблема в вашем -cellForRowAtIndexPath:
методе:
[dict release];
Избавьтесь от этой строки, и она должна работать нормально.
Причина, по которой это устраняет вашу проблему, заключается в том, что -objectAtIndex:
просто возвращает указатель на запрошенный объект в памяти , поэтому вы не отправляете (и не должны) -release
сообщение этому объекту, потому что NSArray
получил право собственности на объект, когда он был вставлен.Отправка -release
на эту ссылку на объект эффективно освобождает объект в памяти, и теперь этот индекс в NSArray
указывает на мусорную память. BAD BAD BAD
Другая проблема заключается в том, что у вас есть утечка памяти здесь:
self.drinkArray = [[NSMutableArray alloc] initWithContentsOfFile:path];
Вы отправляете сообщение -retain
на ссылку на объект, которую выуже есть право собственности путем отправки -alloc
.(Это, конечно, предполагает, что ваш @property
имеет модификатор установки retain
)
Чтобы устранить эту проблему, просто отправьте сообщение -autorelease
этому экземпляру:
self.drinkArray = [[[NSMutableArray alloc] initWithContentsOfFile:path] autorelease];