在NSViewController中没有设置IBOutlets

时间:2011-09-06 16:38:07

标签: xcode cocoa null iboutlet automatic-ref-counting

所以我有一个像这样设置的NSViewController(MyVC):

//MyVC.h
...
@property (nonatomic, retain) IBOutlet NSTextField *input;
...

//MyVC.m
...
@synthesize input;

- (id)init
{
    self = [super initWithNibName: @"MyVC" bundle: [NSBundle mainBundle]];
    NSLog(@"%@", input); //prints (null) always
    return self;
}

- (void)loadView
{
    [super loadView];
    NSLog(@"%@", input); //still (null)
}
...

//MyVC.xib

Custom View       [Referencing Outlet:    File's Owner.view]
    Text Field    [Referencing Outlet:    File's Owner.input]

现在,当我加载这个NSViewController(通过MyVC *vc = [[MyVC alloc] init];)并将其加载到窗口时,我会正确地看到文本字段。但是,正如上面的粘贴(以及几个BAD_ACCESS)所暗示的那样,vc.input永远不会正确指向文本字段。

注意:

  • 此项目正在运行ARC。
  • 这不是简化或概括。我运行这个确切的代码无济于事。
  • 所有IBOutlets都设置得恰当。

1 个答案:

答案 0 :(得分:1)

错误是各种各样的事情。

我的一个修订版缺少IBOutlet标记,并且它们都没有在运行时保留对ViewController的引用。