У меня возникают утечки, если я не помещаю его в dealloc. Я получаю сбой EXC_BAD_ACCESS
Если я это сделаю. Я не вижу ничего плохого в этом коде. Плохой доступ указывается на [events release]
. Я допустил ошибку в коде ниже или это инструменты, которые просто смеются за мой счет?Управление памятью Головная боль
events
является NSArray
@interface EventsViewController : UITableViewController
{
@private
NSArray *events;
}
- (void)viewDidLoad
{
events = [[self getEvents] retain];
}
- (void)dealloc
{
[events release];
[super dealloc];
}
- (NSArray*)getEvents
{
NSMutableArray *response = [[[NSMutableArray alloc] init] autorelease];
//Some sql
while(sqlite3_step(statement) == SQLITE_ROW)
{
Event *event = [[[Event alloc] init] autorelease];
event.subject = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)];
[response addObject:event];
}
return response;
}
Update Много вы говорите код является штраф, который является плюсом. Я не манипулирую events
в другом месте. Я удалил любой код, который пытается попробовать и выделить краш. Возможно, это в родительском представлении?
Это событие щелчка, который толкает EventsViewController: - (Недействительными) eventsClick: (идентификатор) отправитель
{
EventsViewController *eventsViewController = [[EventsViewController alloc] initWithNibName:@"EventsViewController" bundle:nil];
eventsViewController.anywhereConnection = anywhereConnection;
eventsViewController.contact = contact;
[[self navigationController] pushViewController:eventsViewController animated:YES];
[eventsViewController release];
}
Аварии на самом деле происходит, когда я вернусь к родительскому мнению. (Я думаю, что это считается родителем в этом сценарии). Но, возможно, [eventsViewController release]
просто вызывает dealloc
в EventViewController
.
В этом коде нет ошибки. Пожалуйста, напишите больше своего кода. Возможно, вы изменяете события переменной-члена в другой точке кода? – calimarkus
Соглашения о кодировании указывают, что только методы, возвращающие результаты в ссылочные параметры, должны иметь префикс «get». В противном случае возникает путаница. – zaph
Как объявляется «событие», это свойство, если да, то укажите код. Кроме того, настоятельно рекомендуем использовать ARC. – zaph