Mam następujący kod, który działa idealniena moim iPhonie 5 i wszystkich symulatorach iPhone'a, ale ulega awarii na moim iPhonie 4. Otrzymuję EXC_BAD_ACCESS w ostatnim wierszu, w którym przekazuję UITransitionContextToViewKey do mojego kontekstu przejścia.
Mam czystą analizę i kompilację, a to samo dzieje się w przypadku UITransitionContextFromViewKey i UITransitionContextToViewKey.
Mój iPhone 4 działa w systemie iOS 7.1.2, mój cel wdrożenia to 7.0, ukierunkowany podstawowy zestaw SDK wersji 8.0.
Czy ktoś wie, co tu robić? dzięki.
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
// get transition parameters from context
UIView *containerView = transitionContext.containerView;
UIViewController *destinationViewController =
[transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
if ([destinationViewController.title isEqualToString:@"ListController"]) {
// get source and destination views
UIView *sourceViewSnapshot = [self.view snapshotViewAfterScreenUpdates:YES];
UIView *destinationView = [transitionContext viewForKey:UITransitionContextToViewKey]; // EXC_BAD_ACCESS
// ...
}
Odpowiedzi:
1 dla odpowiedzi № 1Od dokumentacja:
UITransitionContextToViewKey
Dostępne w iOS 8.0 i nowszych.
Nie możesz uruchomić tego kodu w systemie iOS 7
Jeśli chcesz zachować zgodność z tą wersją systemu, możesz w tym momencie dodać sprawdzanie wersji systemu w środowisku wykonawczym i rozgałęzić się do kodu zgodnego z systemem iOS 7
6 dla odpowiedzi nr 2
Metoda viewForKey to iOS 8 i nowsze, ale metoda viewControllerForKey jest obsługiwana w iOS 7. Niewielka zmiana w kodzie powoduje wyświetlenie w iOS 7:
UIView *destinationView = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey].view;