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