是否可以从其属性访问父对象?

时间:2012-09-27 06:52:16

标签: objective-c

是否可以从其属性访问父对象?

在这个简单的应用程序中,我有一个响应按键事件的窗口。 我希望我的名为“window”的属性对象将其父对象“AppDelegate”变量“upKeyPressed”设置为事件发生时的值。 有可能吗?

AppDelegate.h:

@interface MyWindow : NSWindow
@end

@interface AppDelegate : NSObject <NSApplicationDelegate>
{
    BOOL upKeyPressed;
}
@property (assign) IBOutlet MyWindow *window;
@end

AppDelegate.m文件:

@implementation MyWindow

- (void)moveUp:(id)sender
{
    // here I want to set upKeyPressed value to YES with a kind of:
    self.parentObject->upKeyPressed = YES; // *** fantasy command
}

@end

@implementation AppDelegate
...
@end

1 个答案:

答案 0 :(得分:0)

不,在财产方面没有父母的概念。你想要做的是将@property (assign) AppDelegate *parentObject;(你可以称之为你想要的)添加到MyWindow类的界面。然后在您的实现中合成它。

要使其正常运作,您还需要将其设置为指向您的应用代理 - 在-applicationDidFinishLaunchingWithOptions:添加self.window.parentObject = self;。然后,要从MyWindow实例访问所谓的“父”对象,只需使用self.parentObject

修改:您需要在AppDelegate的接口定义之前添加@class AppDelegate;来转发声明MyWindow