From 5162f5d77ecd9f06bc98c441671b4e9da2b437cd Mon Sep 17 00:00:00 2001 From: "Justin R. Miller" Date: Mon, 9 Mar 2015 16:32:30 -0700 Subject: refs #935: remove dispatch_once, favor property use, and return immutable styles --- platform/ios/MGLMapView.mm | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) (limited to 'platform') diff --git a/platform/ios/MGLMapView.mm b/platform/ios/MGLMapView.mm index 141d6cae1d..1ab1afcbba 100644 --- a/platform/ios/MGLMapView.mm +++ b/platform/ios/MGLMapView.mm @@ -66,6 +66,7 @@ NSTimeInterval const MGLAnimationDuration = 0.3; @property (nonatomic) UIPinchGestureRecognizer *pinch; @property (nonatomic) UIRotationGestureRecognizer *rotate; @property (nonatomic) UILongPressGestureRecognizer *quickZoom; +@property (nonatomic) NSMutableArray *bundledStyleNames; @property (nonatomic, readonly) NSDictionary *allowedStyleTypes; @property (nonatomic) CGPoint centerPoint; @property (nonatomic) CGFloat scale; @@ -92,9 +93,9 @@ NSTimeInterval const MGLAnimationDuration = 0.3; @end -@implementation MGLMapView { - NSMutableArray *_bundledStyleNames; -} +@implementation MGLMapView + +@synthesize bundledStyleNames=_bundledStyleNames; #pragma mark - Setup & Teardown - @@ -940,27 +941,24 @@ mbgl::DefaultFileSource *mbglFileSource = nullptr; - (NSArray *)bundledStyleNames { - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - if (!_bundledStyleNames) { - NSString *stylesPath = [[MGLMapView resourceBundlePath] stringByAppendingString:@"/styles"]; - - _bundledStyleNames = [[[NSFileManager defaultManager] contentsOfDirectoryAtPath:stylesPath error:nil] mutableCopy]; - - // Add hybrids - NSString *hybridStylePrefix = @"hybrid-"; - NSString *satelliteStylePrefix = @"satellite-"; - NSMutableArray *hybridStyleNames = [NSMutableArray array]; - for (NSString *styleName in _bundledStyleNames) { - if ([styleName hasPrefix:satelliteStylePrefix]) { - [hybridStyleNames addObject:[hybridStylePrefix stringByAppendingString:[styleName substringFromIndex:[satelliteStylePrefix length]]]]; - } + if (!_bundledStyleNames) { + NSString *stylesPath = [[MGLMapView resourceBundlePath] stringByAppendingString:@"/styles"]; + + _bundledStyleNames = [[[NSFileManager defaultManager] contentsOfDirectoryAtPath:stylesPath error:nil] mutableCopy]; + + // Add satellite raster & "hybrid" (satellite raster + vector contours & labels) + NSString *hybridStylePrefix = @"hybrid-"; + NSString *satelliteStylePrefix = @"satellite-"; + NSMutableArray *hybridStyleNames = [NSMutableArray array]; + for (NSString *styleName in _bundledStyleNames) { + if ([styleName hasPrefix:satelliteStylePrefix]) { + [hybridStyleNames addObject:[hybridStylePrefix stringByAppendingString:[styleName substringFromIndex:[satelliteStylePrefix length]]]]; } - [_bundledStyleNames addObjectsFromArray:hybridStyleNames]; } - }); + [_bundledStyleNames addObjectsFromArray:hybridStyleNames]; + } - return _bundledStyleNames; + return [NSArray arrayWithArray:_bundledStyleNames]; } - (void)useBundledStyleNamed:(NSString *)styleName -- cgit v1.2.1