2 つのビューを切り替えると、4 ~ 5 の変更でアプリがクラッシュし、ゾンビを使用してオブジェクトが呼び出されたことを確認しました。
[UIViewController _setViewAppearState:isAnimating:]
最初のビューで SVPullToRefresh ライブラリを使用しています。カルーセルがあり、2 番目のビューは SVPullToRefreshView です。
UIViewController は一般的なものなので、クラッシュの原因を特定するのに苦労しています
これは、クラッシュ時にxcodeによって表示されるメソッドです
- (void)addPullToRefreshWithActionHandler:(void (^)(void))actionHandler {
LogDebug(@"START - init pull to refresh");
if(!self.pullToRefreshView) {
LogDebug(@"Pull to refresh view is nil, we create it");
SVPullToRefreshView *view = [[SVPullToRefreshView alloc] initWithFrame:CGRectMake(0, -SVPullToRefreshViewHeight, self.bounds.size.width, SVPullToRefreshViewHeight)];
view.pullToRefreshActionHandler = actionHandler;
view.scrollView = self;
[self addSubview:view];
view.originalTopInset = self.contentInset.top;
self.pullToRefreshView = view;
self.showsPullToRefresh = YES;
}
}
これが親の呼び出し元です
- (void) viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
__block BlogViewController *blockSelf = self;
[self.articleScrollView addPullToRefreshWithActionHandler:^{
LogDebug(@"start refresh");
[blockSelf refresh];
[blockSelf.articleScrollView.pullToRefreshView stopAnimating];
}];
}
編集:テストを削除する(!self.pullToRefreshView)
と機能しますが、割り当てが積み重なります