Аутлеты и методы экземпляров

У меня есть небольшая проблема и надеюсь, что вы можете мне помочь. Я хочу вызвать метод экземпляра окна подкласса и установить там интерфейс пользователя:

//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.

Другие вопросы по тегам