Objective c 在另一个类中访问NSApplications委托?

Objective c 在另一个类中访问NSApplications委托?,objective-c,cocoa,Objective C,Cocoa,我目前正在尝试编写我的第一个CoreData应用程序,它需要访问applications委托以获取一些信息。所以我试着在我的委托中创建一个小变量,我想读取它来确定我是否得到了正确的委托。但是,我似乎无法访问我的代理并创建一个新的代理。 这是我的密码: //delegate.h #import <Cocoa/Cocoa.h> @interface delegate_TestAppDelegate : NSObject <NSApplicationDelegate> { @

我目前正在尝试编写我的第一个CoreData应用程序,它需要访问applications委托以获取一些信息。所以我试着在我的委托中创建一个小变量,我想读取它来确定我是否得到了正确的委托。但是,我似乎无法访问我的代理并创建一个新的代理。 这是我的密码:

//delegate.h
#import <Cocoa/Cocoa.h>

@interface delegate_TestAppDelegate : NSObject <NSApplicationDelegate> {
@private
    NSWindow *window;
    NSString * myString;
}

@property (assign) IBOutlet NSWindow *window;
@property (retain) NSString * myString;

@end

//delegate.m
#import "delegate_TestAppDelegate.h"

@implementation delegate_TestAppDelegate

@synthesize window, myString;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    self.myString = @"Hello, World";
    NSLog(@"In delegate: %@", self.myString);
}

@end

//MyClass.h
#import <Foundation/Foundation.h>
#import "delegate_TestAppDelegate.h"


@interface MyClass : NSObject {
@private
    delegate_TestAppDelegate * del;
}
- (IBAction)click:(id)sender;

@end

//MyClass.m
#import "MyClass.h"

@implementation MyClass

- (id)init
{
    self = [super init];
    if (self) {
        del = [[NSApplication sharedApplication] delegate];
    }

    return self;
}

- (void)dealloc
{
    [super dealloc];
}

- (IBAction)click:(id)sender {
    NSLog(@"Click: %@", del.myString);
}
@end
//delegate.h
#进口
@接口委托\u TestAppDelegate:NSObject{
@私人的
NSWindow*窗口;
NSString*myString;
}
@属性(分配)窗口*窗口;
@属性(保留)NSString*myString;
@结束
//代表,m
#导入“delegate\u TestAppDelegate.h”
@实现委托\u TestAppDelegate
@合成窗口,myString;
-(无效)ApplicationIDFinishLaunching:(NSNotification*)通知
{
self.myString=@“你好,世界”;
NSLog(@“在委托中:%@”,self.myString);
}
@结束
//MyClass.h
#进口
#导入“delegate\u TestAppDelegate.h”
@接口MyClass:NSObject{
@私人的
代表_TestAppDelegate*del;
}
-(iAction)单击:(id)发件人;
@结束
//我的班级
#导入“MyClass.h”
@MyClass的实现
-(id)init
{
self=[super init];
如果(自我){
del=[[NSApplication sharedApplication]委托];
}
回归自我;
}
-(无效)解除锁定
{
[super dealoc];
}
-(iAction)单击:(id)发件人{
NSLog(@“单击:%@”,删除myString);
}
@结束
奇怪的是,这段代码返回“In delegate:Hello,World”,但返回“Click:(null)”
我的错误在哪里?

我怀疑您在将任何内容分配给应用程序的
委托
属性之前分配了
del
。我建议您完全摆脱
del
指针,每次需要委托时只需调用
[[NSApplication sharedApplication]delegate]

我怀疑您在为应用程序的
delegate
属性分配任何内容之前就分配了
del
。我建议您完全摆脱
del
指针,每次需要委托时只需调用
[[NSApplication sharedApplication]delegate]

在哪里初始化MyClass?作为接口生成器中的NSObject在哪里初始化MyClass?作为接口生成器中的NSObject