簡體   English   中英

甚至在申請之前我的應用程序在iPad上崩潰:didFinishLaunchingWithOptions:

[英]My App crash on iPad before even application:didFinishLaunchingWithOptions:

在ipad上運行時,我的應用程序崩潰了以下崩潰日志。 它在iphone設備上運行良好。 您可能會注意到,它在嘗試設置窗口時崩潰。 我到處搜索,但在任何其他主題中都沒有看到這樣的問題。

謝謝你的幫助。

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: NSParagraphStyle)'
*** First throw call stack:
(
    0   CoreFoundation                      0x000000010e38ff35 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x000000010e028bb7 objc_exception_throw + 45
    2   CoreFoundation                      0x000000010e296998 -[__NSDictionaryM setObject:forKey:] + 968
    3   UIKit                               0x000000010ca99d2d -[UILabel _setLineBreakMode:] + 529
    4   UIKit                               0x000000010cb7a572 -[UIButtonLabel setLineBreakMode:] + 93
    5   UIKit                               0x000000010cb86e5c -[UIButton _setupTitleViewRequestingLayout:] + 308
    6   UIKit                               0x000000010cb7ed15 -[UIButton titleLabel] + 51
    7   UIKit                               0x000000010cd3c6d8 -[UIZoomViewController loadView] + 476
    8   UIKit                               0x000000010c9f67f9 -[UIViewController loadViewIfRequired] + 75
    9   UIKit                               0x000000010c9f6c8e -[UIViewController view] + 27
    10  UIKit                               0x000000010cd3bfa4 -[UIZoomViewController init] + 78
    11  UIKit                               0x000000010cd39eeb -[UIClassicController _setupWindow] + 544
    12  UIKit                               0x000000010cd39b7c +[UIClassicController sharedClassicController] + 140
    13  UIKit                               0x000000010c8e47dd -[UIApplication _handleApplicationActivationWithScene:transitionContext:completion:] + 666
    14  UIKit                               0x000000010c8e42ae __88-[UIApplication _handleApplicationLifecycleEventWithScene:transitionContext:completion:]_block_invoke + 138
    15  UIKit                               0x000000010c8e4215 -[UIApplication _handleApplicationLifecycleEventWithScene:transitionContext:completion:] + 349
    16  UIKit                               0x000000010c8cf31a -[UIApplication scene:didUpdateWithDiff:transitionContext:completion:] + 486
    17  UIKit                               0x000000010c8cedb8 -[UIApplication workspace:didCreateScene:withTransitionContext:completion:] + 336
    18  FrontBoardServices                  0x000000011064f612 __56-[FBSWorkspace client:handleCreateScene:withCompletion:]_block_invoke_2 + 265
    19  FrontBoardServices                  0x000000011065e2a3 __31-[FBSSerialQueue performAsync:]_block_invoke + 16
    20  CoreFoundation                      0x000000010e2c553c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
    21  CoreFoundation                      0x000000010e2bb285 __CFRunLoopDoBlocks + 341
    22  CoreFoundation                      0x000000010e2bb045 __CFRunLoopRun + 2389
    23  CoreFoundation                      0x000000010e2ba486 CFRunLoopRunSpecific + 470
    24  UIKit                               0x000000010c8ce669 -[UIApplication _run] + 413
    25  UIKit                               0x000000010c8d1420 UIApplicationMain + 1282
    26  Edyn                                0x0000000109704323 main + 115
    27  libdyld.dylib                       0x000000010ebd2145 start + 1
    28  ???                                 0x0000000000000001 0x0 + 1
)

編輯1

問題比我想象的要復雜得多。 這就是我所做的。

  1. 實現的方法在[UIButtonLabel setLineBreakMode:]周圍調整,以便我可以看到導致為LineBreakMode使用nil的原因。 我發現如果將lineBreakMode設置為除NSLineBreakByWordWrapping以外的其他東西,它最終會崩潰。
  2. 為了臨時使它工作,我將lineBreakMode強制轉換為NSLineBreakByWordWrapping ,這在這種情況下並不是什么大問題,因為標簽在我的應用程序中永遠不會被查看。

編輯2

在使用lineBreakMode修復問題后,我現在遇到了同樣的問題,但這次是[UILabel setShadow:]。 請注意,它在標簽上崩潰,我沒有更改任何陰影屬性(顏色,偏移或blurRadius)。 我也得到了相同的問題,但這次是使用了paragraphStyle

這意味着我絕對不能繼續使用這種方法,因為它似乎在正在發生的事情中被打破。

編輯3

當我將應用程序的部署目標更改為通用時,我沒有上述任何問題。

我在一個類別中覆蓋了這兩個函數並猜測是什么? 即使您在AppDelegate中控制應用程序之前,這些功能似乎也被ios調用。 由於某些原因,在ipad上這個回報為零。 刪除類別修復了問題。

+ (id)systemFontOfSize:(CGFloat)sz {
    return [UIFont fontWithName:@"HelveticaNeue-Regular" size:sz];
}
+ (id)boldSystemFontOfSize:(CGFloat)sz {
    return [UIFont fontWithName:@"HelveticaNeue-Bold" size:sz];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM