[ASTextNode] Add NSCache based cache for ASTextKitRenderer (#2199)

* Add cache implementation

* Remove old ASEqualityHashHelpers

* Some more ASEquality and ASEqualityHashHelper cleanup

* Add cache for text renderer in ASTextNode

* Move from C++ LRU renderer cache to NSCache based renderer cache
This commit is contained in:
Michael Schneider
2016-09-07 00:23:21 +02:00
committed by Adlai Holler
parent 6124830b23
commit 2388f67474
9 changed files with 126 additions and 227 deletions

View File

@@ -116,31 +116,6 @@ static NSCharacterSet *_defaultAvoidTruncationCharacterSet()
return _calculatedSize;
}
- (void)setConstrainedSize:(CGSize)constrainedSize
{
if (!CGSizeEqualToSize(constrainedSize, _constrainedSize)) {
_sizeIsCalculated = NO;
_constrainedSize = constrainedSize;
_calculatedSize = CGSizeZero;
// Throw away the all subcomponents to create them with the new constrained size new as well as let the
// truncater do it's job again for the new constrained size. This is necessary as after a truncation did happen
// the context would use the truncated string and not the original string to truncate based on the new
// constrained size
__block ASTextKitContext *ctx = _context;
__block ASTextKitTailTruncater *tru = _truncater;
__block ASTextKitFontSizeAdjuster *adj = _fontSizeAdjuster;
_context = nil;
_truncater = nil;
_fontSizeAdjuster = nil;
ASPerformBlockOnDeallocationQueue(^{
ctx = nil;
tru = nil;
adj = nil;
});
}
}
- (void)_calculateSize
{
// if we have no scale factors or an unconstrained width, there is no reason to try to adjust the font size