Objective c ObjC-更改NSTextField stringValue会导致exc_访问错误

Objective c ObjC-更改NSTextField stringValue会导致exc_访问错误,objective-c,xcode,cocoa,Objective C,Xcode,Cocoa,什么有效 我有一个带有NSTextField和按钮的视图: 单击该按钮时,将创建一张“卡片”,其标题与文本框中的字符串相同。如果未输入任何文本,则卡的标题将采用某些默认值 问题 这很好,但我希望每次单击按钮时文本框的字符串都会重置。因此,我添加了[inputField setStringValue:@”“尝试这样做,但Xcode在尝试访问aCard的myTitle成员的Card的drawRect方法时给了我一个EXC\u BAD\u ACCESS问题 为什么重置inputField的string

什么有效

我有一个带有
NSTextField
和按钮的视图:

单击该按钮时,将创建一张“卡片”,其标题与文本框中的字符串相同。如果未输入任何文本,则卡的标题将采用某些默认值

问题

这很好,但我希望每次单击按钮时文本框的字符串都会重置。因此,我添加了
[inputField setStringValue:@”“
尝试这样做,但Xcode在尝试访问
aCard
myTitle
成员的
Card
drawRect
方法时给了我一个
EXC\u BAD\u ACCESS
问题

为什么重置
inputField
stringValue
会导致此错误

代码和屏幕截图

从按钮按下方法:

if (![inputField.stringValue  isEqual: @""])
{
    [aCard setStringTitle:inputField.stringValue];
    [inputField setStringValue:@""]; // this line causes a problem!
}
以下是该卡的
setStringTitle
方法:

-(void)setStringTitle:(NSString *)aString
{
    myTitle = aString;
    [[self viewWithTag:0] setStringValue:myTitle];
} 
- (void)drawRect:(NSRect)dirtyRect
{
    [super drawRect:dirtyRect];

    // Drawing code here.
    [myColor set];
    NSRectFill([self bounds]);

    NSLog(@"My title: %@",myTitle);
    NSTextField* cardTitle = [[NSTextField alloc] initWithFrame:NSMakeRect(10, 10, 80, 30)];
    [cardTitle setStringValue:myTitle];
    [cardTitle setBezeled:NO];
    [cardTitle setEditable:NO];
    [cardTitle setDrawsBackground:NO];
    [cardTitle setSelectable:NO];
    [self addSubview:cardTitle];
    NSLog(@"string title is added within card class");

}
和卡的
drawRect
方法:

-(void)setStringTitle:(NSString *)aString
{
    myTitle = aString;
    [[self viewWithTag:0] setStringValue:myTitle];
} 
- (void)drawRect:(NSRect)dirtyRect
{
    [super drawRect:dirtyRect];

    // Drawing code here.
    [myColor set];
    NSRectFill([self bounds]);

    NSLog(@"My title: %@",myTitle);
    NSTextField* cardTitle = [[NSTextField alloc] initWithFrame:NSMakeRect(10, 10, 80, 30)];
    [cardTitle setStringValue:myTitle];
    [cardTitle setBezeled:NO];
    [cardTitle setEditable:NO];
    [cardTitle setDrawsBackground:NO];
    [cardTitle setSelectable:NO];
    [self addSubview:cardTitle];
    NSLog(@"string title is added within card class");

}

如果添加异常断点,堆栈跟踪显示什么添加异常断点。转到“断点导航器”,单击左下角的“+”,选择“添加异常断点”。运行应用程序以获取断点。当您遇到异常断点时,单击调试继续几次,您将得到一个回溯和更多错误信息。发布该消息和Xcode/Debugger消息的精确副本。如果要通过
viewWithTag:
访问视图,最好不要使用默认标记值
0
。在xib中为文本字段指定一个唯一的标记。是否启用了ARC?