Итак, цель, которую я пытаюсь достичь, состоит в том, чтобы при нажатии на кнопку я хотел бы изменить текст метки. Пройдя несколько онлайн-уроков и попробовав множество альтернативных вариантов выделения / освобождения памяти, я все еще не могу обойти эту ошибку: *** - [HomeViewController executeSelector: withObject: withObject:]: сообщение отправлено в освобожденный экземпляр 0x4b4aa10
Вот мой код:
В моем приложении делегат:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.homeViewController = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:[NSBundle mainBundle]];
self.window.rootViewController = self.homeViewController;
//[window addSubview:self.homeViewController.homeView];
[self.window makeKeyAndVisible];
return YES;
}
- (void)dealloc {
[homeViewController release];
[window release];
[super dealloc];
}
Тогда в моем HomeViewController.m:
@synthesize btnNewProject;
@synthesize btnOpenProject;
@synthesize label;
- (IBAction)newProject:(id)sender {
NSString *text = @"We did it!";
label.text = text;
//[text release];
}
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
//self.homeView = nil;
}
- (void)dealloc {
[label release];
[btnOpenProject release];
[btnNewProject release];
//[homeView release];
[super dealloc];
}
Итак, событие запускается и вызывается newProject, но я не могу преодолеть это падение. Я попытался автоматически освободить контроллер и некоторые другие вещи. Есть ли явные ошибки?
Спасибо!
UPDATE:
Так что я использую IB. Я думаю, что я правильно настроил соединения от HomeViewController (класс которого я установил в пользовательском классе) до кнопок и надписи, а также действий с кнопками.
Одна важная деталь заключается в том, что у меня есть представление поверх контроллера представления (и оно связано с владельцем файла), а кнопки и метка находятся сверху представления в IB, но все соединения осуществляются через HomeViewController. - не уверен, что это должно иметь значение. На самом деле я нигде не устанавливаю представление в коде (т. Е. В делегате приложения, в котором установлен контроллер), но это переменная внутри HomeViewController, объявленная (без alloc), как и другие переменные (кнопки и метки):
@interface HomeViewController : UIViewController {
HomeView *homeView;
UIButton *btnNewProject;
UIButton *btnOpenProject;
UILabel *label;
}
@property (nonatomic, retain) HomeView *homeView;
@property (nonatomic, retain) IBOutlet UIButton *btnNewProject;
@property (nonatomic, retain) IBOutlet UIButton *btnOpenProject;
@property (nonatomic, retain) IBOutlet UILabel *label;
- (IBAction)openProject:(id)sender;
- (IBAction)newProject:(id)sender;
@end
Вот скриншот моих подключений:
Хм ... собираюсь выбрать в распределении немного больше ...
Я загрузил проект здесь:
http://devmu.com/transfer/NoteMap.zip