Ich habe ein Problem mit hidesBarOnSwipe
Eigentum von UINavigationController
.UINavigationController bidesBarOnSwipe Speicherleck Problem
Übersicht:
Ich habe einen Controller FirstViewController benannt, die Stammansicht von UINavigationController
ist. Alles ist in Main.storyboard
. FirstViewController enthält UIButton
Aktion. Innerhalb dieser Aktion instanziiere ich einen SecondViewController und schiebe ihn auf einen Navigationsstapel.
- (IBAction)button:(id)sender {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
[self.navigationController pushViewController:vc animated:YES];
}
Innen SecondViewController gibt es nur eine hidesBarsOnSwipe
Eigenschaft auf YES
auf viewDidLoad
:
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationController.hidesBarsOnSwipe = YES;
}
und dealloc wird NSLogged:
- (void)dealloc {
NSLog(@"Dealloc");
}
Problem:
Wenn wir wischen, um navigationBar zu verstecken, wird dealloc nie aufgerufen. Instruments zeigt hier ein SecondViewController-Speicherleck.
Wenn wir auf SecondViewController sind und wir drücken nur die Taste zurück - alles ist in Ordnung. Dealloc wird angerufen.
Es gibt definitiv eine Art von Retain-Zyklus, aber ich habe keine Ahnung, warum und wie man diese Art von Situation vermeiden kann.
Habe gerade das gleiche Problem. Xcode 9.2 (Beta) –
Dies scheint iOS 11+ Problem zu sein. Alles funktioniert gut auf iOS 10.3- –