After upgrading my app to iOS9 I’am getting an error in my app which says:
: objc[344]: Cannot form weak reference to instance (0x15919e00) of class LoginVC. It is possible that this object was over-released, or is in the process of deallocation.
Below is the function in which i get this error:
-(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];
}
The app gets stuck at the login screen and doesn't switch to next screens.
This error doesn’t come in iOS8. Can anyone help me with this issue.
Make sure you are not using instance being deallocated.
I have the same issue. It was not occurring in iOS 8 but occurred in iOS 9. Because I was overriding setDelegate method like this.
-(void)setDelegate:(id<UICollectionViewDelegate>)delegate{
_internalDelegate = delegate;
[super setDelegate:self];
}
So in iOS 9, OS sets delegate to nil on de-allocation, but I was setting it to self. So quick fix was
-(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];
}
}