【问题标题】:Accessing property inside non-init methods gives bad access在非初始化方法中访问属性会导致访问错误
【发布时间】:2010-09-14 11:04:08
【问题描述】:

我已经开始从事一个业余项目,所以代码库非常小,几乎不会出错。奇怪的事情正在发生。在 viewDidLoad 中,我将一个数组集初始化为属性:

@property (nonatomic, retain) NSMutableArray * story_array;

并用数据填充它。这个打印输出很好:

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

我有一个手势识别器:

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

点击它会调用一个方法,其第一行是this(即相同的NSLog):

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

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

story_array 的初始化如下:

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

【问题讨论】:

  • 您还没有发布最重要的几行 - 您如何在 viewDidLoad 方法中实际创建和初始化您的 story_array...
  • 啊,谢谢。这是一个简单的 [[NSMutableArray alloc] init];我会把它添加进去。

标签: objective-c memory-management


【解决方案1】:

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

someField = someValue;

我需要:

self.someField = someValue;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    相关资源
    最近更新 更多