From ce243043f5251bb6a7fabc90d8ca3162ade8a44f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguy=E1=BB=85n?= Date: Tue, 18 Oct 2016 15:03:10 -0700 Subject: [PATCH] [ios, macos] Raise correct style layer misuse exception (#6738) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implement the layer property on MGLStyleLayer itself, where it’s declared, so that the check for an abstract style layer doesn’t itself raise an exception. The concrete style layer classes still declare their own layers as covariant properties, although those properties aren’t actually used anywhere. --- platform/darwin/src/MGLStyle.mm | 8 ++++---- platform/darwin/src/MGLStyleLayer.mm | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/platform/darwin/src/MGLStyle.mm b/platform/darwin/src/MGLStyle.mm index f9f2e03d4..3964b47ad 100644 --- a/platform/darwin/src/MGLStyle.mm +++ b/platform/darwin/src/MGLStyle.mm @@ -176,7 +176,7 @@ static NSURL *MGLStyleURL_emerald; [NSException raise:NSInvalidArgumentException format: @"The style layer %@ cannot be added to the style. " @"Make sure the style layer was created as a member of a concrete subclass of MGLStyleLayer.", - NSStringFromClass(self)]; + layer]; } self.mapView.mbglMap->addLayer(std::unique_ptr(layer.layer)); @@ -189,14 +189,14 @@ static NSURL *MGLStyleURL_emerald; format: @"The style layer %@ cannot be added to the style. " @"Make sure the style layer was created as a member of a concrete subclass of MGLStyleLayer.", - NSStringFromClass(layer)]; + layer]; } if (!otherLayer.layer) { [NSException raise:NSInvalidArgumentException format: @"A style layer cannot be placed before %@ in the style. " - @"Make sure the style layer was created as a member of a concrete subclass of MGLStyleLayer.", - NSStringFromClass(otherLayer)]; + @"Make sure otherLayer was obtained using -[MGLStyle layerWithIdentifier:].", + otherLayer]; } const mbgl::optional belowLayerId{otherLayer.identifier.UTF8String}; diff --git a/platform/darwin/src/MGLStyleLayer.mm b/platform/darwin/src/MGLStyleLayer.mm index a2bb1fc2c..293aa54f3 100644 --- a/platform/darwin/src/MGLStyleLayer.mm +++ b/platform/darwin/src/MGLStyleLayer.mm @@ -3,6 +3,12 @@ #include +@interface MGLStyleLayer () + +@property (nonatomic) mbgl::style::Layer *layer; + +@end + @implementation MGLStyleLayer - (instancetype)initWithIdentifier:(NSString *)identifier