我有一个简单的Answer类,如下所示:
@H_502_8@
@H_502_8@
@interface Answer : NSObject { NSString *_text; NSNumber *_votes; } @property(nonatomic,retain) NSString *text; @property(nonatomic,retain) NSNumber *votes; +(id)initFromAnswerData:(NSSet *)data; -(id)initWithText:(NSString *)answer; @end
实现如下:@H_502_8@
@H_502_8@
#import "Answer.h" #import "AnswerData.h" #import "AppDelegate.h" @implementation Answer @synthesize text = _text; @synthesize votes = _votes; -(id)initWithText:(NSString *)answer { if( (self=[super init])) { _text = answer; _votes = 0; } return self; } @end
如果我使用initWithText:方法在视图控制器中创建一个Answers数组,当我在数组中取一个Answer并尝试找到它的文本值时,我不可避免地会出现EXC_BAD_ACCESS错误.@H_502_8@
但是,如果我初始化一个新的答案,设置文本值,然后将其添加到数组我没有此访问问题.@H_502_8@
所以这会导致问题:@H_502_8@
@H_502_8@
[arrayOfAnswers addObject:[[Answer alloc] initWithText:@"Hello"]];
但这不是:@H_502_8@
@H_502_8@
Answer *newAnswer = [[Answer alloc] initWithText:nil]; newAnswer.text = @"Hello"; [arrayOfAnswers addObject:newAnswer];
有谁能解释为什么?@H_502_8@