【问题标题】:Enum Type variable BAD_ACCESS枚举类型变量 BAD_ACCESS
【发布时间】:2014-07-29 03:26:55
【问题描述】:

我遇到了这个问题:

我在头文件中定义了一个枚举类型:

typedef enum {
    aView,
    bView,
    cView
} SCViewType;

然后在我的头文件中,我有:

@property (nonatomic) SCViewType currentView;

在我的.m 文件中,我有这个:

- (void) setCurrentView: (SCViewType) view
{
    self.currentView = view;
}

而这条self.currentView = view 行出现BAD_ACCESS 错误...

请指出这个实现有什么问题,我应该做些什么来解决它?

谢谢!

【问题讨论】:

  • 这就是你在setCurrentView: 方法中所做的一切吗?如果是这样,为什么要重写该属性的合成 setter 方法?

标签: ios objective-c enums


【解决方案1】:

当您致电self.currentView = view; 时。 Objective-C 将自动转换为- (void) setCurrentView: (SCViewType) view。所以这个方法会被一次又一次的调用。

只需将代码修改为:

- (void) setCurrentView: (SCViewType) view
{
    _currentView = view;
}

【讨论】:

  • 请记住,OP 也实现了 getter 方法,除非显式添加,否则 ivar 将不存在。
【解决方案2】:

“自我”。将调用 setter 方法并最终进入无限循环。 More detail

【讨论】:

    猜你喜欢
    • 2018-08-30
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 2011-08-17
    • 2012-09-16
    • 1970-01-01
    相关资源
    最近更新 更多