0

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

在这个简单的应用程序中,我有一个响应按键事件的窗口。我希望名为“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
4

1 回答 1

0

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

要使其正常工作,您还需要将其设置为指向您的应用程序委托 - 在您的-applicationDidFinishLaunchingWithOptions:addself.window.parentObject = self;中。然后要从您的实例访问所谓的“父”对象MyWindow,只需使用self.parentObject.

编辑:您需要AppDelegate通过@class AppDelegate;在您的接口定义之前放置MyWindow.

于 2012-09-27T07:00:33.137 回答