diff --git a/Source/ASTextNode.mm b/Source/ASTextNode.mm index 15bf4bf1a4..2ae61f0636 100644 --- a/Source/ASTextNode.mm +++ b/Source/ASTextNode.mm @@ -204,7 +204,14 @@ static ASTextKitRenderer *rendererForAttributes(ASTextKitAttributes attributes, } @dynamic placeholderEnabled; -static NSArray *DefaultLinkAttributeNames = @[ NSLinkAttributeName ]; +static NSArray *DefaultLinkAttributeNames() { + static NSArray *names; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + names = @[ NSLinkAttributeName ]; + }); + return names; +} - (instancetype)init { @@ -225,7 +232,7 @@ static NSArray *DefaultLinkAttributeNames = @[ NSLinkAttributeName ]; self.opaque = NO; self.backgroundColor = [UIColor clearColor]; - self.linkAttributeNames = DefaultLinkAttributeNames; + self.linkAttributeNames = DefaultLinkAttributeNames(); // Accessibility self.isAccessibilityElement = YES; diff --git a/Source/ASTextNode2.mm b/Source/ASTextNode2.mm index 975843fff8..b5ddd8b2fe 100644 --- a/Source/ASTextNode2.mm +++ b/Source/ASTextNode2.mm @@ -179,7 +179,14 @@ static NSString *ASTextNodeTruncationTokenAttributeName = @"ASTextNodeTruncation } @dynamic placeholderEnabled; -static NSArray *DefaultLinkAttributeNames = @[ NSLinkAttributeName ]; +static NSArray *DefaultLinkAttributeNames() { + static NSArray *names; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + names = @[ NSLinkAttributeName ]; + }); + return names; +} - (instancetype)init { @@ -200,9 +207,9 @@ static NSArray *DefaultLinkAttributeNames = @[ NSLinkAttributeName ]; // The common case is for a text node to be non-opaque and blended over some background. self.opaque = NO; self.backgroundColor = [UIColor clearColor]; - - self.linkAttributeNames = DefaultLinkAttributeNames; - + + self.linkAttributeNames = DefaultLinkAttributeNames(); + // Accessibility self.isAccessibilityElement = YES; self.accessibilityTraits = self.defaultAccessibilityTraits;