问题描述
我正在从存档存储库处理Telegram源代码,并且每个ViewController和我可以看到以下错误.我也尝试注释掉一些代码,但是崩溃只是从一个类转移到另一个类.有什么方法可以阻止 traitCollection
导致这些崩溃?
I am working on Telegram source code from the archived repo and application crashes in every ViewController and I can see the following error. I also tried to comment out some codes but the crash just moves from one class to another. Is there any way to stop traitCollection
from causing these crashes?
Telegram[50090:787790] *** Assertion failure in UITraitCollection * _Nonnull _UIGetCurrentFallbackTraitCollection(void)(), /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKitCore_Sim/UIKit-3899.13.13/_UIFallbackEnvironment.m:91
Telegram[50090:787790] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '<Decorated498f14ad: 0x7f80e9d46b20; baseClass = UIImageView; frame = (0 0; 8 14); userInteractionEnabled = NO; layer = <CALayer: 0x6000023abc00>> returned nil from -traitCollection, which is not allowed.'
PS:我无法切换到Telegram iOS的较新版本.
PS: I cannot switch to newer versions of Telegram iOS.
我尝试了这答案,但没有帮助
我也尝试使用异步调度程序运行代码行,但仍然没有变化
Also I tried to run my lines of code using a async dispatcher but still no change
First throw call stack:
(
0 CoreFoundation 0x00007fff23b98bde __exceptionPreprocess + 350
1 libobjc.A.dylib 0x00007fff503b5b20 objc_exception_throw + 48
2 CoreFoundation 0x00007fff23b98958 +[NSException raise:format:arguments:] + 88
3 Foundation 0x00007fff255eb7be -[NSAssertionHandler handleFailureInFunction:file:lineNumber:description:] + 166
4 UIKitCore 0x00007fff46dd08bd _UIGetCurrentFallbackTraitCollection + 962
5 UIKitCore 0x00007fff46dce21a +[UITraitCollection _currentTraitCollection] + 196
6 UIKitCore 0x00007fff476366c6 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 2386
7 QuartzCore 0x00007fff2b030ef9 -[CALayer layoutSublayers] + 255
8 QuartzCore 0x00007fff2b0358ff _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 517
9 QuartzCore 0x00007fff2b041fe4 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 80
10 QuartzCore 0x00007fff2af8a4a8 _ZN2CA7Context18commit_transactionEPNS_11TransactionEd + 324
11 QuartzCore 0x00007fff2afbfab3 _ZN2CA11Transaction6commitEv + 643
12 UIKitCore 0x00007fff4715c27c _UIApplicationFlushRunLoopCATransactionIfTooLate + 104
13 UIKitCore 0x00007fff471fd878 __handleEventQueueInternal + 6902
14 CoreFoundation 0x00007fff23afbac1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
15 CoreFoundation 0x00007fff23afb9ec __CFRunLoopDoSource0 + 76
16 CoreFoundation 0x00007fff23afb1c4 __CFRunLoopDoSources0 + 180
17 CoreFoundation 0x00007fff23af5ecf __CFRunLoopRun + 1263
18 CoreFoundation 0x00007fff23af56b6 CFRunLoopRunSpecific + 438
19 GraphicsServices 0x00007fff3815cbb0 GSEventRunModal + 65
20 UIKitCore 0x00007fff47162a67 UIApplicationMain + 1621
21 Telegram 0x000000010bcbb0f4 main + 132
22 libdyld.dylib 0x00007fff5123bcf5 start + 1
)
推荐答案
在使用旧的Telegram源代码的情况下,TGSimpleImageView只会在traitCollection函数中放置以下代码而不是'return nil'来引起此问题
In case of old Telegram source code, TGSimpleImageView will cause this problem simply in traitCollection function put following code instead of 'return nil'
- (UITraitCollection *)traitCollection
{
if (@available(iOS 13.0, *)) {
[UITraitCollection setCurrentTraitCollection:[[UITraitCollection alloc]init]];
} else {
// Fallback on earlier versions
};
return [[UITraitCollection alloc]init];
}
这篇关于由于-traitCollection返回nil,应用程序在iOS 13上崩溃,这是不允许的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!