Я создаю собственное представление, которое будет отвечать за отображение текста.
BOOL DisplayBiggerString(Item *feedItem, CGFloat contentWidth) {
StyledString *const tryBiggerString = [feedItem buildBiggerString:[feedItem myStyle]];
CoreTextView *testTextView = [[CoreTextView alloc] initWithFrame:CGRectMake(0, 0, contentWidth, 0)];
[testTextView setStyledString:tryBiggerString];
return testTextView.numberOfLines > 1;
}
Кажется, что он падает на линии:
CoreTextView *testTextView = [[CoreTextView alloc] initWithFrame:CGRectMake(0, 0, contentWidth, 0)];
Я не уверен, почему это вызывает сбой для этого представления.Функция внутри просто создает новый вид, например, так:
if (self = [super initWithFrame:CGRectMake(0, 0, width, 1)])
Лично мне не удалось воспроизвести это, поскольку я могу отвечать только на сообщения о сбоях, которые я получил.Я проверил contentWidth, и он просто получает ширину collectionView:
CGRectGetWidth(self.collectionView.bounds)
, и это делается вне вызова dispatch_async, который определяет размер строки при поступлении из кэша:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
MakeTextCacheWarmup(newObjects, self.dataSource.feedSectionControllerComponents.itemConfiguration, width, width);
Есть ли какой-нибудь способ передать некоторую ширину, которая может привести к сбою?Я проверил все значения с плавающей запятой, и они пока казались хорошими.Или это проблема для создания представления внутри асинхронного блока?Я никогда не добавляю представление, а просто использую его для определения количества строк текста
libobjc.A.dylib objc_msgSend
1CoreFoundation -[__NSSetM addObject:]
2UIKitCore UIViewDidSetNeedsDisplay
3UIKitCore -[UIView _createLayerWithFrame:]
4UIKitCore UIViewCommonInitWithFrame
5UIKitCore -[UIView initWithFrame:]
6MyApp __cmp_gen_92064(MYUserSession+MYMediaUploadManager.m:13)
7+MyApp DisplayBiggerString(MYConsumptionHelpers.m:12)
8+MyApp +[MYFeedItemTextCell buildStyledStringWithFeedItem:feedItemRow:pageCellState:configuration:contentWidth:textWidth:combinedContextOptions:userSession:](MYFeedItemTextCell.m:403)
9+MyApp __cmp_gen_8c7c(MYMainAppViewController.m:174)
10+MyApp MakeTextCacheWarmup(MakeTextCacheWarmup.m:47)
11+MyApp __81-[MYMainFeedViewController feedNetworkSource:didFinishLoadingObjects:withConfig:]_block_invoke.818