我有一个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;
}
赞赏任何和所有想法!
我想出来了。有一个参考循环最终导致应用程序崩溃。
答案 0 :(得分:0)
有一个参考循环。我有一个功能:
dict
一遍又一遍地引用自己。