From 9ac3ce3758c42c407917d859c85bc066f54c68d0 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Wed, 22 Nov 2017 11:51:03 -0800 Subject: [PATCH] Memoize bubble factory Shaves 5% off of initial conversation load. // FREEBIE --- .../src/OWSMessagesBubbleImageFactory.swift | 30 ++++++++++--------- .../ConversationView/Cells/OWSMessageCell.m | 7 +---- 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/Signal/src/OWSMessagesBubbleImageFactory.swift b/Signal/src/OWSMessagesBubbleImageFactory.swift index 1586287b4..878b145c6 100644 --- a/Signal/src/OWSMessagesBubbleImageFactory.swift +++ b/Signal/src/OWSMessagesBubbleImageFactory.swift @@ -9,33 +9,35 @@ import SignalServiceKit @objc class OWSMessagesBubbleImageFactory: NSObject { + static let shared = OWSMessagesBubbleImageFactory() + private let jsqFactory = JSQMessagesBubbleImageFactory()! // TODO: UIView is a little bit expensive to instantiate. // Can we cache this value? - private var isRTL: Bool { + private lazy var isRTL: Bool = { return UIView().isRTL() - } + }() - public var incoming: JSQMessagesBubbleImage { + public lazy var incoming: JSQMessagesBubbleImage = { let color = UIColor.jsq_messageBubbleLightGray()! - return incoming(color: color) - } + return self.incoming(color: color) + }() - public var outgoing: JSQMessagesBubbleImage { + public lazy var outgoing: JSQMessagesBubbleImage = { let color = UIColor.ows_materialBlue() - return outgoing(color: color) - } + return self.outgoing(color: color) + }() - public var currentlyOutgoing: JSQMessagesBubbleImage { + public lazy var currentlyOutgoing: JSQMessagesBubbleImage = { let color = UIColor.ows_fadedBlue() - return outgoing(color: color) - } + return self.outgoing(color: color) + }() - public var outgoingFailed: JSQMessagesBubbleImage { + public lazy var outgoingFailed: JSQMessagesBubbleImage = { let color = UIColor.gray - return outgoing(color: color) - } + return self.outgoing(color: color) + }() public func bubble(message: TSMessage) -> JSQMessagesBubbleImage { if message is TSIncomingMessage { diff --git a/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.m b/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.m index da153cbc4..bd7262034 100644 --- a/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.m +++ b/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.m @@ -1048,12 +1048,7 @@ NS_ASSUME_NONNULL_BEGIN - (OWSMessagesBubbleImageFactory *)bubbleFactory { - static OWSMessagesBubbleImageFactory *instance = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - instance = [OWSMessagesBubbleImageFactory new]; - }); - return instance; + return [OWSMessagesBubbleImageFactory shared]; } - (void)prepareForReuse