将我的应用程序升级到 iOS9 后,我的应用程序中出现错误,内容如下:
: objc[344]: 无法形成对 LoginVC 类的实例 (0x15919e00) 的弱引用。该对象可能被过度释放,或者正在释放过程中。
下面是我收到此错误的函数:
-(void)dismissLogin {
self.isLoggingIn = NO;
[self stopLoginAnimation];
[self dismissViewControllerAnimated:YES completion:NO];
[[NSNotificationCenter defaultCenter] removeObserver:self];
[self.appDelegate setLoginVC:nil];
[self.view removeFromSuperview];
//[APPDEL selectTabBar];
}
该应用程序卡在登录屏幕上并且不会切换到下一个屏幕。
iOS8 中不会出现此错误。
谁能帮我解决这个问题。
确保您没有使用正在释放的实例。
我有同样的问题。它没有发生在 iOS 8 中,而是发生在 iOS 9 中。因为我像这样重写了 setDelegate 方法。
-(void)setDelegate:(id<UICollectionViewDelegate>)delegate{
_internalDelegate = delegate;
[super setDelegate:self];
}
因此,在 iOS 9 中,操作系统在取消分配时将 delegate 设置为 nil,但我将其设置为 self。所以快速修复是
-(void)setDelegate:(id<UICollectionViewDelegate>)delegate{
_internalDelegate = delegate;
if (delegate) {
//Set delegate to self only if original delegate is not nil
[super setDelegate:self];
}else{
[super setDelegate:delegate];
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)