单例iOS中的removeFromSuperview上的EXC_BAD_ACCESS

时间:2014-06-30 19:33:17

标签: ios objective-c exc-bad-access

我有一个NSObject子类的单例。它引用了一个IntroView(UIView的子类),它已作为子视图添加到根视图控制器中。当在视图上单击某个按钮时,它会调用单例中的方法,该方法从其超级视图中删除视图。我每次都得到一个EXC_BAD_ACCESS代码= 2。我不知道为什么和我尝试使用僵尸并检查引用是否为零。我试过保留它,一切(这都是使用ARC)。以下是一些代码片段:

//the property in the Manager.h file
@property (nonatomic, retain) IntroView *introView;

//Code called when that button is clicked and view is supposed to be removed
- (void)setOption:(NSString *)chosenOption {
    self.chosenOption = chosenOption;
    if (!!self.introView) {
        [self.introView removeFromSuperview]; //THIS LINE
}

//creates the singleton
+ (instancetype)manager {
    static Manager *manager = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        manager = [[self alloc] init];
    });
    return manager;
}

赞赏任何和所有想法!

我想出来了。有一个参考循环最终导致应用程序崩溃。

1 个答案:

答案 0 :(得分:0)

有一个参考循环。我有一个功能:

dict

一遍又一遍地引用自己。