Я новичок в objective-c (и все, что касается Apple, если на то пошло).
Я разрабатываю приложение iOS и сталкивался с ошибкой, которая казалась мне очень интересной. В основном, я начал работать в VC (LoginViewController), а где-то по пути я бы нажал другой VC на мой контроллер навигации (MyProfileViewController).
Но когда я вернусь через стек обратно в LoginViewController, прикосновение к любому объекту на экране вызовет ошибку EXEC_BAD_ACCESS
. После некоторой царапины головы я решил изменить имена таблиц в представлениях (оба моих ViewControllers содержали UITableView
, определенные в их соответствующих файлах .m, и оба из которых я назвал "myTable" ).
Оказалось, что для моего приложения, помимо того, что оно способствует плохой читаемости (вам не нужно меня бить по этому вопросу), назвав обе таблицы тем же самым, что и вызывало крах. Поэтому я предполагаю, что когда MyProfileViewController был освобожден, он также выпустил "myTable" из LoginViewController.
С обычными ошибками я понимаю свою ошибку, стараюсь учиться на ней и двигаться дальше. Но это не имеет для меня никакого смысла, почему это создает катастрофу в первую очередь. Какие-нибудь идеи? Для справки, здесь, как я определял и освобождал UITableView в обоих ViewControllers.
@implementation MyProfileViewController//same format as LoginViewController
UITableView* myTable;//It since been renamed to something more descriptive
//code...
-(void)viewDidLoad{
[super viewDidLoad];
myTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 460) style:UITableViewStyleGrouped];
[myUpdateTable setDataSource:self];
[myTable setDelegate:self];
[self.view addSubview:myTable];
}
//code...
-(void)dealloc{
[myTable release];
[super dealloc];
}