我正在尝试从另一个类访问我的应用程序委托中的属性(我认为这很简单),但我在这样做时遇到了麻烦。我的文件目前看起来像这样:
LTAppDelegate.h
#import <Cocoa/Cocoa.h>
#import "Subject.h"
@interface LTAppDelegate : NSObject <NSApplicationDelegate, NSOutlineViewDelegate, NSOutlineViewDataSource, NSMenuDelegate> {
}
@property Subject *selectedSubject;
@end
LTAppDelegate.m
@synthesize selectedSubject;
然后applicationDidFinishLaunching
在 LTAppDelegate.m 中设置 selectedSubject 的值。现在我想从我拥有的另一个类中访问它,该类称为 LTTableViewController 并且设置如下:
LTTableViewController.h
#import <Foundation/Foundation.h>
#import "LTAppDelegate.h"
#import "Subject.h"
#import "Note.h"
@interface LTTableViewController : NSObject{
NSMutableArray *notesArray;
LTAppDelegate *appDelegate;
Subject *s;
}
-(IBAction)currentSubjectDetails:(id)sender;
@end
LTTableViewController.m
#import "LTTableViewController.h"
@implementation LTTableViewController
- (id)init
{
self = [super init];
if (self) {
appDelegate = ((LTAppDelegate *)[[NSApplication sharedApplication] delegate]);
s = [appDelegate selectedSubject];
NSLog(@"Test Subject: %@", [s title]);
}
return self;
}
-(IBAction)currentSubjectDetails:(id)sender{
NSLog(@"Selected Subject: %@", [s title]);
}
在插入各种 NSLog() 消息之后,会出现在 LTAppDelegate 中调用之前applicationDidFinishLaunching
调用了 LTTableViewController 的 init 方法。基于此,LTTableViewController.m init 中的“测试主题”NSLog() 显示 null 是有意义的;但是,“currentSubjectDetails”方法链接到界面上的按钮,当应用程序完成加载后按下该按钮时,NSLog() 消息仍返回 null。
有什么明显的我在这里想念的吗。我觉得我有点愚蠢,错过了一些非常基本的东西。