From 78f1a325e6778f52715c91455a574ca50a3ef8d4 Mon Sep 17 00:00:00 2001 From: Ilya Grechuhin Date: Fri, 19 Aug 2016 13:59:04 +0300 Subject: [PATCH 1/2] [ios] Crash fix. --- .../PageController/MWMPageController.mm | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/Welcome/PageController/MWMPageController.mm b/iphone/Maps/Classes/CustomViews/MapViewControls/Welcome/PageController/MWMPageController.mm index 495c07a008..e59f125220 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/Welcome/PageController/MWMPageController.mm +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/Welcome/PageController/MWMPageController.mm @@ -113,21 +113,29 @@ self.isAnimatingTransition = YES; __weak auto weakSelf = self; NSArray * viewControllers = @[ currentController ]; - UIPageViewControllerNavigationDirection const direction = UIPageViewControllerNavigationDirectionForward; + UIPageViewControllerNavigationDirection const direction = + UIPageViewControllerNavigationDirectionForward; + // Workaround for crash: http://crashes.to/s/8101d0400f6 + // Related discussions: http://stackoverflow.com/questions/14220289/removing-a-view-controller-from-uipageviewcontroller + // http://stackoverflow.com/questions/25740245/assertion-failure-in-uipageviewcontroller [self setViewControllers:viewControllers direction:direction animated:YES - completion:^(BOOL finished) - { - if (finished) - { - dispatch_async(dispatch_get_main_queue(), ^ - { - weakSelf.isAnimatingTransition = NO; - [weakSelf setViewControllers:viewControllers direction:direction animated:NO completion:nil]; - }); - } - }]; + completion:^(BOOL finished) { + if (finished) + { + dispatch_async(dispatch_get_main_queue(), ^{ + [weakSelf setViewControllers:viewControllers + direction:direction + animated:NO + completion:^(BOOL finished) { + dispatch_async(dispatch_get_main_queue(), ^{ + weakSelf.isAnimatingTransition = NO; + }); + }]; + }); + } + }]; } - (void)setPageControllerDataSource:(MWMPageControllerDataSource *)pageControllerDataSource From 64dd531499a80ef7590d16f7d4a1d91533f13a67 Mon Sep 17 00:00:00 2001 From: Ilya Grechuhin Date: Fri, 19 Aug 2016 13:59:48 +0300 Subject: [PATCH 2/2] Clang-format. --- .../PageController/MWMPageController.mm | 62 ++++++++++--------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/Welcome/PageController/MWMPageController.mm b/iphone/Maps/Classes/CustomViews/MapViewControls/Welcome/PageController/MWMPageController.mm index e59f125220..327033ba9e 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/Welcome/PageController/MWMPageController.mm +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/Welcome/PageController/MWMPageController.mm @@ -5,27 +5,32 @@ @interface MWMPageController () -@property (nonatomic) SolidTouchView * iPadBackgroundView; -@property (weak, nonatomic) UIViewController * parent; -@property (nonatomic) Class welcomeClass; +@property(nonatomic) SolidTouchView * iPadBackgroundView; +@property(weak, nonatomic) UIViewController * parent; +@property(nonatomic) Class welcomeClass; -@property (nonatomic) MWMPageControllerDataSource * pageControllerDataSource; -@property (nonatomic) MWMWelcomeController * currentController; -@property (nonatomic) BOOL isAnimatingTransition; +@property(nonatomic) MWMPageControllerDataSource * pageControllerDataSource; +@property(nonatomic) MWMWelcomeController * currentController; +@property(nonatomic) BOOL isAnimatingTransition; @end @implementation MWMPageController -+ (instancetype)pageControllerWithParent:(UIViewController *)parentViewController welcomeClass:(Class)welcomeClass ++ (instancetype)pageControllerWithParent: + (UIViewController *)parentViewController + welcomeClass:(Class)welcomeClass { NSAssert(parentViewController != nil, @"Parent view controller can't be nil!"); - MWMPageControllerDataSource * dataSource = [[MWMPageControllerDataSource alloc] initWithWelcomeClass:welcomeClass]; + MWMPageControllerDataSource * dataSource = + [[MWMPageControllerDataSource alloc] initWithWelcomeClass:welcomeClass]; MWMPageController * pageController = nil; if ([dataSource presentationCountForPageViewController:pageController] == 1) - pageController = [[MWMWelcomeController welcomeStoryboard] instantiateViewControllerWithIdentifier:@"MWMPageCurlController"]; + pageController = [[MWMWelcomeController welcomeStoryboard] + instantiateViewControllerWithIdentifier:@"MWMPageCurlController"]; else - pageController = [[MWMWelcomeController welcomeStoryboard] instantiateViewControllerWithIdentifier:@"MWMPageScrollController"]; + pageController = [[MWMWelcomeController welcomeStoryboard] + instantiateViewControllerWithIdentifier:@"MWMPageScrollController"]; pageController.pageControllerDataSource = dataSource; pageController.parent = parentViewController; pageController.welcomeClass = welcomeClass; @@ -48,15 +53,15 @@ MWMWelcomeController * current = self.currentController; [Statistics logEvent:kStatEventName(kStatWhatsNew, [[current class] udWelcomeWasShownKey]) withParameters:@{kStatAction : kStatNext}]; - self.currentController = static_cast( - [self.pageControllerDataSource pageViewController:self - viewControllerAfterViewController:current]); + self.currentController = static_cast([self.pageControllerDataSource + pageViewController:self + viewControllerAfterViewController:current]); } - (void)show { [Statistics logEvent:kStatEventName(kStatWhatsNew, [self.welcomeClass udWelcomeWasShownKey]) - withParameters:@{kStatAction : kStatOpen}]; + withParameters:@{kStatAction : kStatOpen}]; [self configure]; if (IPAD) [self.parent.view addSubview:self.iPadBackgroundView]; @@ -87,25 +92,23 @@ } } -- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator +- (void)viewWillTransitionToSize:(CGSize)size + withTransitionCoordinator:(id)coordinator { [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; - [coordinator animateAlongsideTransition:^(id context) - { - if (IPAD) - self.view.center = {size.width / 2, size.height / 2}; - else - self.view.origin = {}; - } completion:nil]; + [coordinator + animateAlongsideTransition:^(id context) { + if (IPAD) + self.view.center = {size.width / 2, size.height / 2}; + else + self.view.origin = {}; + } + completion:nil]; } #pragma mark - Properties -- (MWMWelcomeController *)currentController -{ - return self.viewControllers.firstObject; -} - +- (MWMWelcomeController *)currentController { return self.viewControllers.firstObject; } - (void)setCurrentController:(MWMWelcomeController *)currentController { if (!currentController || self.isAnimatingTransition) @@ -116,8 +119,9 @@ UIPageViewControllerNavigationDirection const direction = UIPageViewControllerNavigationDirectionForward; // Workaround for crash: http://crashes.to/s/8101d0400f6 - // Related discussions: http://stackoverflow.com/questions/14220289/removing-a-view-controller-from-uipageviewcontroller - // http://stackoverflow.com/questions/25740245/assertion-failure-in-uipageviewcontroller + // Related discussions: + // http://stackoverflow.com/questions/14220289/removing-a-view-controller-from-uipageviewcontroller + // http://stackoverflow.com/questions/25740245/assertion-failure-in-uipageviewcontroller [self setViewControllers:viewControllers direction:direction animated:YES