Mi aplicación falla en el iPad antes incluso de la aplicación: didFinishLaunchingWithOptions:

Mi aplicación se bloquea con el siguiente logging de errores cuando se ejecutó en el ipad. Simplemente funciona bien en dispositivos iPhone. Como puede notar, se bloquea al intentar configurar la window. He buscado en todas partes, pero no veo tal problema en ningún otro tema.

Gracias por tu ayuda.

*** 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 loadViewIfRequinetworking] + 75 9 UIKit 0x000000010c9f6c8e -[UIViewController view] + 27 10 UIKit 0x000000010cd3bfa4 -[UIZoomViewController init] + 78 11 UIKit 0x000000010cd39eeb -[UIClassicController _setupWindow] + 544 12 UIKit 0x000000010cd39b7c +[UIClassicController shanetworkingClassicController] + 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 ) 

Edit 1

El problema es más complicado de lo que pensaba. Esto es lo que he hecho.

  1. Método implementado swizzling alnetworkingedor [UIButtonLabel setLineBreakMode:] para que pueda ver lo que está causando el uso nil para LineBreakMode. Descubrí que si lineBreakMode se configura en otra cosa que NSLineBreakByWordWrapping finalmente falla.
  2. Para hacer que funcione temporalmente estoy forzando a lineBreakMode a NSLineBreakByWordWrapping que no es un gran problema en este caso porque la label nunca se ve en mi aplicación.

Editar 2

Después de arreglar el problema con lineBreakMode , ahora estoy recibiendo el mismo problema, pero esta vez con [UILabel setShadow:]. Tenga en count que se bloqueó en la label donde no cambié nada a los attributes de sombra (color, desplazamiento o blurRadius). También recibo el mismo problema, pero esta vez con el estilo de párrafo

Lo que significa que definitivamente no puedo seguir usando este enfoque, ya que parece ser algo roto en lo que está sucediendo.

Edita 3

Cuando cambio el destino de implementación de mi aplicación a universal, no tengo ninguno de los problemas anteriores.

Estaba anulando esas dos funciones en una categoría y ¿adivinen qué? esa function parece ser invocada por ios incluso antes de que usted obtenga el control de la aplicación en su AppDelegate. Y por alguna razón en ipad, este return no. Eliminar la categoría solucionó el problema.

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