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?