是否可以从其属性访问父对象?
在这个简单的应用程序中,我有一个响应按键事件的窗口。 我希望我的名为“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
答案 0 :(得分:0)
不,在财产方面没有父母的概念。你想要做的是将@property (assign) AppDelegate *parentObject;
(你可以称之为你想要的)添加到MyWindow
类的界面。然后在您的实现中合成它。
要使其正常运作,您还需要将其设置为指向您的应用代理 - 在-applicationDidFinishLaunchingWithOptions:
添加self.window.parentObject = self;
。然后,要从MyWindow
实例访问所谓的“父”对象,只需使用self.parentObject
。
修改:您需要在AppDelegate
的接口定义之前添加@class AppDelegate;
来转发声明MyWindow
。