From 81a97680528995ef6fce3deb8f06b5a0a58501b9 Mon Sep 17 00:00:00 2001 From: Ilya Grechuhin Date: Wed, 31 May 2017 12:08:40 +0300 Subject: [PATCH] [cherry] [FABRIC-7708] [ios] Fixed search ads indexer crash. --- iphone/Maps/Core/Search/MWMSearch.mm | 5 ++--- iphone/Maps/UI/Search/MWMSearchManager.mm | 2 -- .../UI/Search/TableView/MWMSearchTableViewController.mm | 8 ++++++++ 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/iphone/Maps/Core/Search/MWMSearch.mm b/iphone/Maps/Core/Search/MWMSearch.mm index 561e77c7b8..92ed38a4d6 100644 --- a/iphone/Maps/Core/Search/MWMSearch.mm +++ b/iphone/Maps/Core/Search/MWMSearch.mm @@ -106,12 +106,10 @@ using TObservers = NSHashTable<__kindof TObserver>; f.SearchInViewport(m_viewportParams); } } - [self updateItemsIndexWithBannerReload:YES]; [self onSearchCompleted]; } else { - [self updateItemsIndexWithBannerReload:NO]; [self onSearchResultsUpdated]; } }; @@ -259,7 +257,6 @@ using TObservers = NSHashTable<__kindof TObserver>; auto manager = [MWMSearch manager]; manager->m_everywhereResults.Clear(); manager.suggestionsCount = 0; - [manager updateItemsIndexWithBannerReload:YES]; [self reset]; } @@ -357,6 +354,7 @@ using TObservers = NSHashTable<__kindof TObserver>; // if (allCompleted && allEmpty) // [[MWMAlertViewController activeAlertController] presentSearchNoResultsAlert]; + [self updateItemsIndexWithBannerReload:YES]; for (TObserver observer in self.observers) { if ([observer respondsToSelector:@selector(onSearchCompleted)]) @@ -366,6 +364,7 @@ using TObservers = NSHashTable<__kindof TObserver>; - (void)onSearchResultsUpdated { + [self updateItemsIndexWithBannerReload:NO]; for (TObserver observer in self.observers) { if ([observer respondsToSelector:@selector(onSearchResultsUpdated)]) diff --git a/iphone/Maps/UI/Search/MWMSearchManager.mm b/iphone/Maps/UI/Search/MWMSearchManager.mm index 28402abfaa..e1b5840893 100644 --- a/iphone/Maps/UI/Search/MWMSearchManager.mm +++ b/iphone/Maps/UI/Search/MWMSearchManager.mm @@ -390,7 +390,6 @@ typedef NS_ENUM(NSUInteger, MWMSearchManagerActionBarState) { - (UIViewController *)topController { [MWMFrameworkListener removeObserver:self]; - [MWMSearch removeObserver:self.tableViewController]; self.noMapsController = nil; switch (self.state) { @@ -402,7 +401,6 @@ typedef NS_ENUM(NSUInteger, MWMSearchManagerActionBarState) { [MWMFrameworkListener addObserver:self]; return self.noMapsController; case MWMSearchManagerStateTableSearch: - [MWMSearch addObserver:self.tableViewController]; return self.tableViewController; case MWMSearchManagerStateMapSearch: return self.tableViewController; } diff --git a/iphone/Maps/UI/Search/TableView/MWMSearchTableViewController.mm b/iphone/Maps/UI/Search/TableView/MWMSearchTableViewController.mm index 8598a3de81..50e5c9cd22 100644 --- a/iphone/Maps/UI/Search/TableView/MWMSearchTableViewController.mm +++ b/iphone/Maps/UI/Search/TableView/MWMSearchTableViewController.mm @@ -22,10 +22,18 @@ { self = [super init]; if (self) + { _delegate = delegate; + [MWMSearch addObserver:self]; + } return self; } +- (void)dealloc +{ + [MWMSearch removeObserver:self]; +} + - (void)viewDidLoad { [super viewDidLoad];