Аутлеты и методы экземпляров
У меня есть небольшая проблема и надеюсь, что вы можете мне помочь. Я хочу вызвать метод экземпляра окна подкласса и установить там интерфейс пользователя:
//AppDelegate.h
#import <Cocoa/Cocoa.h>
@class MainView;//The main window
@interface DownloadedAppDelegate : NSObject <NSApplicationDelegate> {
IBOutlet MainView*mainview;//the objects are in the same nib, outlet connected with the window
}
@property(nonatomic,retain) IBOutlet MainView*mainview;
@end
,
//AppDelegate.m
#import "MainView.h"
@synthesize mainview;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[mainview launched];//But sometimes this code fails, I don't know why
//launched sets up the interface
}
-(void)dealloc {
mainview=nil;
}
MainView принадлежит NSWindow.
Что-то не так или что-то улучшается? Должен ли я создать пользовательский интерфейс где-нибудь еще? Знаете ли вы, почему этот код не всегда работает?
2 ответа
Решение
Попробуйте положить
[mainview launched];
в
-(void)awakeFromNib {
}
Используйте отладчик! Запускается даже по вызову?
Установите точку останова на запущенный вызов и посмотрите на значение mainview. Это ноль? Это связано с тем, что розетки не гарантированно подключены до awakeFromNib.