委托分配原因 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];
我试图在我的视图控制器中为 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];