@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:方法在视图控制器中创建一个Answers数组,当我在数组中取一个Answer并尝试找到它的文本值时,我不可避免地会出现EXC_BAD_ACCESS错误.
但是,如果我初始化一个新的答案,设置文本值,然后将其添加到数组我没有此访问问题.
所以这会导致问题:
[arrayOfAnswers addobject:[[Answer alloc] initWithText:@"Hello"]];
但这不是:
Answer *newAnswer = [[Answer alloc] initWithText:nil];newAnswer.text = @"Hello";[arrayOfAnswers addobject:newAnswer];
有谁能解释为什么?
解决方法 你直接使用属性_text和_Votes但不是他们的setter.因此,您没有保留该行的输入参数答案
_text = answer;
你应该改为
_text = [answer retain];
要么
self.text = answer;总结
以上是内存溢出为你收集整理的objective-c – EXC_BAD_ACCESS在初始化时在自定义类上设置属性?全部内容,希望文章能够帮你解决objective-c – EXC_BAD_ACCESS在初始化时在自定义类上设置属性?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)