我有一个简单的 Answer 类,如下所示:
@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
实现如下所示:
#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:
当我在数组中获取答案并尝试查找它的文本值时,我不可避免地会遇到 EXC_BAD_ACCESS 错误。
但是,如果我初始化一个新的答案,设置文本值,然后将其添加到数组中,我没有这个访问问题。
所以这会导致问题:
[arrayOfAnswers addObject:[[Answer alloc] initWithText:@"Hello"]];
但这不会:
Answer *newAnswer = [[Answer alloc] initWithText:nil];
newAnswer.text = @"Hello";
[arrayOfAnswers addObject:newAnswer];
谁能解释为什么?