App cra sh при каждом переходе после преобразования AppDelegate в Swift из Objective- C с [__SwiftValue set]: нераспознанный селектор, отправленный экземпляру - PullRequest
0 голосов
/ 05 февраля 2020

Я преобразовал приложение из Objective- C в Swift 5.1. Последним шагом было преобразование AppDelegate. Приложение работало отлично, пока я не преобразовал AppDelegate. После преобразования КАЖДЫЙ переход вызывает сбой с:

"[__ SwiftValue set]: нераспознанный селектор, отправленный экземпляру"

У меня есть семь вкладок. Каждая вкладка работает отлично, пока я не переключусь на другой контроллер представления ИЛИ если я выберу ... Подробнее. Я полностью сбит с толку. Я установил каждую точку останова, которую могу придумать. Например, когда я готовлюсь к переходу на одном из контроллеров, кажется, что все переменные установлены правильно, но как только функция завершается, приложение вылетает перед загрузкой следующего контроллера представления. Точка останова всегда является оператором класса AppDelegate в AppDelegate.

Что происходит? Когда я снова переключаюсь на использование версии AppDelegate для Objective- C, все хорошо. Я предполагаю, что что-то освобождается или разыменовывается, что я не могу обнаружить. Вот код вокруг UITabbarController в AppDelegate:

    let tc: UITabBarController? = window?.rootViewController as? UITabBarController
    var items: [UIViewController]? = tc?.viewControllers
    //set tab titles...
    var i: Int = 0
    for nav in items ?? [] {
        guard let nav = nav as? UINavigationController else {
            continue
        }
        let vc: UIViewController? = nav.viewControllers.first
        i += 1
        switch i {
            case 1:
                vc?.title = NSLocalizedString(Globals.kBD_Everyday, comment: "Title for first tab")
            case 2:
                vc?.title = NSLocalizedString(Globals.kBD_People, comment: "Title for second tab")
            case 3:
                vc?.title = NSLocalizedString(Globals.kBD_Places, comment: "Title for third tab")
            case 4:
                vc?.title = NSLocalizedString(Globals.kBD_Tracks, comment: "Title for fourth tab")
            case 5:
                vc?.title = NSLocalizedString(Globals.kBD_Songs, comment: "Title for fifth tab")
            case 6:
                vc?.title = NSLocalizedString(Globals.kBD_Instruments, comment: "Title for sixth tab")
            case 7:
                vc?.title = NSLocalizedString(Globals.kBD_Sources, comment: "Title for last tab")
            default:
                break
        }
    }
    if Globals.my_IS_TEST != 0 {
        //log application document directory
        print("Version \(appVersionString ?? ""), Build: \(appBuildString ?? "")")
        print("\(AppDelegate.applicationDocumentsDirectory()!)")
        print("plist at \(plist)")
    } else {
        //remove data load
        items?.removeLast()
        tc?.viewControllers = items
    }
    //firstObject is a nav controller
    let tabView = tc?.viewControllers?.first as! UINavigationController
    cvc = tabView.viewControllers.first as? ContainerViewController
    cvc?.isThisDay = true

Это выходные данные отладчика: 2020-02-04 18: 23: 22.118721-0500 Fab4Everyday [78607: 10435517] - [__ SwiftValue set]: не распознан селектор отправлен в экземпляр 0x604000110c10 2020-02-04 18: 23: 22.125943-0500 Fab4Everyday [78607: 10435517] * Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [__ SwiftValue set]: нераспознанный селектор отправлен в экземпляр 0x604000110c10 '* стек вызовов первого выброса: (

0   CoreFoundation                      0x000000010680627e __exceptionPreprocess + 350
1   libobjc.A.dylib                     0x0000000106673b20 objc_exception_throw + 48
2   CoreFoundation                      0x0000000106826fd4 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3   CoreFoundation                      0x000000010680ac4c ___forwarding___ + 1436
4   CoreFoundation                      0x000000010680cf78 _CF_forwarding_prep_0 + 120
5   UIFoundation                        0x000000011b0cdf37 -[NSCoreTypesetter _NSFastDrawString:length:attributes:paragraphStyle:typesetterBehavior:lineBreakMode:rect:padding:graphicsContext:baselineRendering:usesFontLeading:usesScreenFont:scrollable:syncAlignment:mirrored:boundingRectPointer:baselineOffsetPointer:wantsTextLineFragments:drawingContext:] + 2621
6   UIFoundation                        0x000000011b0cf388 -[NSCoreTypesetter _stringDrawingCoreTextEngineWithOriginalString:rect:padding:graphicsContext:forceClipping:attributes:stringDrawingOptions:drawingContext:wantsTextLineFragments:validatedAttributedString:firstNonRenderedCharacterIndex:foundSoftHyphenAtEOL:enginePathUsed:] + 1142
7   UIFoundation                        0x000000011b0c9a67 __NSStringDrawingEngine + 5999
8   UIFoundation                        0x000000011b0c64bf _NSStringDrawingCore + 173
9   UIFoundation                        0x000000011b0cac82 -[NSAttributedString(NSExtendedStringDrawing) drawWithRect:options:context:] + 456
10  UIKitCore                           0x00000001197b3ea4 -[UILabel _drawTextInRect:baselineCalculationOnly:] + 3783
11  UIKitCore                           0x00000001197b0dc8 -[UILabel drawTextInRect:] + 1051
12  UIKitCore                           0x00000001197b4169 -[UILabel drawRect:] + 71
13  UIKitCore                           0x00000001198656f3 -[UIView(CALayerDelegate) drawLayer:inContext:] + 632
14  QuartzCore                          0x0000000104fbb6bf -[CALayer drawInContext:] + 285
15  QuartzCore                          0x0000000104e85743 CABackingStoreUpdate_ + 190
16  QuartzCore                          0x0000000104fc40e9 ___ZN2CA5Layer8display_Ev_block_invoke + 53
17  QuartzCore                          0x0000000104fbb042 -[CALayer _display] + 2022
18  QuartzCore                          0x0000000104fcda80 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 502
19  QuartzCore                          0x0000000104f14848 _ZN2CA7Context18commit_transactionEPNS_11TransactionEd + 324
20  QuartzCore                          0x0000000104f49b51 _ZN2CA11Transaction6commitEv + 643
21  UIKitCore                           0x000000011937a3f4 _UIApplicationFlushRunLoopCATransactionIfTooLate + 104
22  UIKitCore                           0x000000011941d57a __handleEventQueueInternal + 6902
23  CoreFoundation                      0x0000000106769471 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
24  CoreFoundation                      0x000000010676939c __CFRunLoopDoSource0 + 76
25  CoreFoundation                      0x0000000106768b74 __CFRunLoopDoSources0 + 180
26  CoreFoundation                      0x000000010676387f __CFRunLoopRun + 1263
27  CoreFoundation                      0x0000000106763066 CFRunLoopRunSpecific + 438
28  GraphicsServices                    0x000000010ac59bb0 GSEventRunModal + 65
29  UIKitCore                           0x0000000119380d4d UIApplicationMain + 1621
30  Fab4Everyday                        0x00000001026efb3b main + 75
31  libdyld.dylib                       0x000000010c2e7c25 start + 1
32  ???                                 0x0000000000000001 0x0 + 1

) libc ++ abi.dylib: завершается с необработанным исключением типа NSException

1 Ответ

0 голосов
/ 09 февраля 2020

Я исправил проблему, как мне кажется, бессмысленным способом. В то время как я внес изменения во многие упрощенные функции и т. Д. c., Единственное изменение, которое я сделал, - дать каждому контроллеру представления / навигации идентификатор раскадровки и идентификатор восстановления. Теперь все было.

...