委托分配原因 EXC_BAD_ACCESS

Delegate assignment causes EXC_BAD_ACCESS

我试图在我的视图控制器中为 NSTextField 创建一个委托,但是程序因 EXC_BAD_ACCESS 而崩溃。为什么会这样?我读到我正在调用一个不存在的对象,但我不知道什么不存在。我正在使用 ARC。

这是在我的视图控制器中创建委托对象的方式:

#import <Cocoa/Cocoa.h>
#import "Delegate.h"

@interface ViewController : NSViewController <NSTextFieldDelegate>{
}
@end

--

#import "ViewController.h"
@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSTextField* textField1 = [[NSTextField alloc] initWithFrame:NSMakeRect(200, 200, 150, 20)];
    [self.view addSubview:textField1];

    Delegate* delegate1 = [[Delegate alloc]init];
    [textField1 setDelegate:delegate1];
}

@end

为什么我的程序会崩溃?

我认为 delegate1 是发布,在 viewDidLoad

Delegate* delegate1 = [[Delegate alloc]init];

您应该在 ViewController.h 中创建一个 var 来处理它。那么

delegate1 = [[Delegate alloc]init];