委派分配导致EXC_BAD_ACCESS

问题描述 投票:-1回答:1

我试图在我的视图控制器中为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

为什么我的程序会崩溃?

objective-c cocoa memory-management automatic-ref-counting exc-bad-access
1个回答
1
投票

我认为delegate1是在viewDidLoad发布的

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

您应该在ViewController.h中创建一个用于处理它的var。然后

delegate1 = [[Delegate alloc]init];

© www.soinside.com 2019 - 2024. All rights reserved.