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