在非init方法中访问属性会导致访问不良

时间:2010-09-14 11:04:09

标签: objective-c memory-management

我已经开始研究一个辅助项目,因此代码库非常小,可能会出错。发生了一些奇怪的事情。在viewDidLoad中,我将数组设置为属性:

@property (nonatomic, retain) NSMutableArray * story_array;

并填写数据。打印输出很好:

NSLog(@"%@", ((ArticlePreview *)[self.story_array objectAtIndex:0]).article);

我有一个手势识别器:

UITapGestureRecognizer * openStory = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showStory)];

点击它会调用第一行为此的方法(即相同的NSLog):

NSLog(@"%@", ((ArticlePreview *)[self.story_array objectAtIndex:0]).article);

但这会导致访问不良。访问story_array本身很好(它会说它里面有很多ArticlePreview对象)但访问它们的字段是禁止的。

story_array初始化如下:

self.story_array = [[NSMutableArray alloc] init];

1 个答案:

答案 0 :(得分:0)

未正确完成对ARticle预览对象字段的分配。我有:

someField = someValue;

我需要:

self.someField = someValue;

我仍然觉得有点疯狂,但你去了。解决。