从不同的类调用时不执行一个类的方法

时间:2014-05-28 16:02:13

标签: objective-c object

我正在为objective-c中的项目开发一个前端,我在获取类Window的方法时遇到了一些麻烦,这是NSViewController的一个子类,当从一个调用时完全执行不同的阶层。

我有一个名为Window的类setColor的方法,它改变了我的NSTableView变量的颜色,该变量链接到我界面中的镶边滚动视图。我可以通过setColor中的init方法调用这样的Window方法来成功更改颜色:[self setColor :self];

然而,当我执行此[window1 setColor: window1] window1Window是我在类Door中声明的类Window.h的对象时,似乎没有任何事情发生,因为登上滚动视图保持不变。

我的@interface Window : NSViewController { @public IBOutlet NSTableView *dataTableView; } @property (retain) IBOutlet NSTableView *tableView; - (IBAction)SetColor:(id)sender; @end 文件如下所示:

Window.m

我的@synthesize tableView; - (void) awakeFromNib { // [self SetColor :self]; } - (IBAction)SetColor:(id)sender; { NSLog(@"changing the color"); [self->tableView setBackgroundColor: NSColor.blueColor]; } 看起来像这样:

Door.h

@interface Door : NSViewController { Window* window1; } -(IBAction)buttonPress:(id)sender; @property (retain) Window* window1; @end 看起来像这样

Door.m

-(void) dealloc{ [window1 release]; } -(id)init{ self = [super init]; if(self){ window1 = [Window alloc]; } -(IBAction)buttonPress :(id)Sender; { [window1 setColor: window1]; } 看起来像这样:

{{1}}

我正在使用Xcode 3.2,所以我不能使用ARC。

1 个答案:

答案 0 :(得分:0)

window1 = [Window alloc]不会加载Nib或情节提要,并将插座IBOutlet NSTableView *dataTableView连接到其中的表格视图。

如果" Window"是一个视图控制器,您需要以更标准的方式初始化它和其中的插座。视图控制器需要正确的初始化或者出口是零,而在Objective-C中,如果你将方法发送到nil,它就什么都不做。