CKTextKitContext Class Reference
Inherits from | NSObject |
---|---|
Declared in | CKTextKitContext.h |
Overview
A threadsafe container for the TextKit components that CKTextKit uses to lay out and truncate its text.
This container is the sole owner and manager of the TextKit classes. This is an important model because of major thread safety issues inside vanilla TextKit. It provides a central locking location for accessing TextKit methods.
– initWithAttributedString:lineBreakMode:maximumNumberOfLines:constrainedSize:layoutManagerFactory:
Initializes a context and its associated TextKit components.
- (instancetype)initWithAttributedString:(NSAttributedString *)attributedString lineBreakMode:(NSLineBreakMode)lineBreakMode maximumNumberOfLines:(NSUInteger)maximumNumberOfLines constrainedSize:(CGSize)constrainedSize layoutManagerFactory:(NSLayoutManager *( *) ( void ))layoutManagerFactory
Discussion
Initialization of TextKit components is a globally locking operation so be careful of bottlenecks with this class.
Declared In
CKTextKitContext.h
– performBlockWithLockedTextKitComponents:
All operations on TextKit values MUST occur within this locked context. Simultaneous access (even non-mutative) to TextKit components may cause crashes.
- (void)performBlockWithLockedTextKitComponents:(void ( ^ ) ( NSLayoutManager *layoutManager , NSTextStorage *textStorage , NSTextContainer *textContainer ))block
Discussion
The block provided MUST not call out to client code from within its scope or it is possible for this to cause deadlocks in your application. Use with EXTREME care.
Callers MUST NOT keep a ref to these internal objects and use them later. This WILL cause crashes in your application.
Declared In
CKTextKitContext.h