From fc7cff333ece1ff4ed19ed158dcd66db1d5c609a Mon Sep 17 00:00:00 2001 From: Michael Schneider Date: Sun, 19 Jun 2016 14:59:39 -0700 Subject: [PATCH] Prevent subclassing of ASTextNode and ASImageNode --- AsyncDisplayKit/ASImageNode.mm | 10 ++++++++++ AsyncDisplayKit/ASTextNode.mm | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/AsyncDisplayKit/ASImageNode.mm b/AsyncDisplayKit/ASImageNode.mm index 8609bf489f..024bf1370d 100644 --- a/AsyncDisplayKit/ASImageNode.mm +++ b/AsyncDisplayKit/ASImageNode.mm @@ -63,6 +63,16 @@ struct ASImageNodeDrawParameters { #pragma mark - NSObject ++ (void)initialize +{ + [super initialize]; + + if (self != [ASImageNode class]) { + // Prevent custom drawing in subclasses + ASDisplayNodeAssert(!ASSubclassOverridesClassSelector([ASImageNode class], self, @selector(displayWithParameters:isCancelled:)), @"Subclass %@ must not override displayWithParameters:isCancelled: method. Custom drawing in %@ subclass is not supported.", NSStringFromClass(self), NSStringFromClass([ASImageNode class])); + } +} + - (instancetype)init { if (!(self = [super init])) diff --git a/AsyncDisplayKit/ASTextNode.mm b/AsyncDisplayKit/ASTextNode.mm index 9fd9fafb7a..688da55cc7 100644 --- a/AsyncDisplayKit/ASTextNode.mm +++ b/AsyncDisplayKit/ASTextNode.mm @@ -71,6 +71,16 @@ struct ASTextNodeDrawParameter { #pragma mark - NSObject ++ (void)initialize +{ + [super initialize]; + + if (self != [ASTextNode class]) { + // Prevent custom drawing in subclasses + ASDisplayNodeAssert(!ASSubclassOverridesClassSelector([ASTextNode class], self, @selector(drawRect:withParameters:isCancelled:isRasterizing:)), @"Subclass %@ must not override drawRect:withParameters:isCancelled:isRasterizing: method. Custom drawing in %@ subclass is not supported.", NSStringFromClass(self), NSStringFromClass([ASTextNode class])); + } +} + static NSArray *DefaultLinkAttributeNames = @[ NSLinkAttributeName ]; - (instancetype)init