Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Application crashes on iOS 13 because of returned nil from -traitCollection, which is not allowed

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: I cannot switch to newer versions of Telegram iOS.

I've tried this answer but it didn't help

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
)
like image 721
Alireza Rabiei Avatar asked Oct 07 '19 13:10

Alireza Rabiei


People also ask

How do you fix an app that keeps crashing on IOS 13?

Solution 1: Restart iPhone 13 So, when you find your apps crashing on iPhone, the first thing to do is restart the iPhone to see if that resolves the problem.

Why do my apps crash for no reason?

This usually occurs when your Wi-Fi or cellular data is slow or unstable, causing apps to malfunction. Another reason for Android apps crashing can be a lack of storage space in your device. This can occur when you overload your device's internal memory with heavy apps.

How do you fix a crashing app without deleting it?

The easiest way to fix an app that keeps crashing on your Android smartphone is to simply force stop it and open it again. To do this, go to Settings -> Apps and select the app that keeps crashing. Tap on the app's name and then tap on 'Force stop'. Now try opening the app again and see if it works well.


1 Answers

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];
}
like image 151
Amin Avatar answered Oct 22 '22 17:10

Amin