Mensaje de error ‘_BSMachError: (os / kern) capacidad no válida (20)’

Tenga en cuenta que este mensaje de error es bastante bajo, por lo que aparece por diferentes motivos en diferentes escenarios. Si tiene un escenario que no se menciona en una de las respuestas a continuación, considere agregar su situación también, por lo que tal vez esta podría ser una respuesta central para varias situaciones que generan este mensaje de error.

Editar 10 de noviembre de 2015 También tenga en cuenta que marqué mi propia respuesta como la respuesta, pero eso fue antes de que alguien más haya publicado. Supongo que ninguno debería ser marcado como la respuesta, porque como hemos visto a continuación … este error no tiene una sola respuesta porque es de tan bajo nivel.

Estoy corriendo

  • Simulador de iOS 9.0
  • XCode 7.0

Todo estaba funcionando bien ayer.

Hoy, después de un montón de trabajo relacionado con la rotación, comencé a tener este error en la salida de mi consola cuando ejecuté la aplicación en el simulador y la giré.

_BSMachError: (os / kern) capacidad no válida (20)

_BSMachError: (os / kern) nombre no válido (15)

Captura de pantalla para este problema – Borré mi carpeta de comstackción, – He limpiado la carpeta de datos derivados, – He reiniciado el simulador.

Estaba trabajando con

  • UIViewController viewWillLayoutSubviews
  • UIViewController viewWillTransitionToSize:...

También estaba verificando varias configuraciones de ‘Dibujo’ en el Inspector de Atributos en IB.

También creé una categoría de utilidad en UIView, donde creé un conjunto de métodos que crean CGRect y me ayuda a asignar marcos a las vistas.

Controlador de vista de raíz

Configuración del controlador de vista raíz

Basado en https://forums.developer.apple.com/thread/15683 :

Cambie ” Región de desarrollo nativo de localización ” en info.plist a Estados Unidos en lugar de en .

Actualizado: Luego puede revertir estos cambios.

También me encontré con los errores de la consola _BSMachError mientras me _BSMachError a la aplicación Configuración en iOS 9 desde una acción UIAlertController . Un dispatch_async resolvió mi problema:

 [aAlertVC addAction:[UIAlertAction actionWithTitle:@"Settings" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { dispatch_async(dispatch_get_main_queue(), ^{ [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; }); }]]; 

Ok, no lo he anclado por completo, pero esto te hará llegar el 99% del camino hasta allí. Estoy usando un control de mapa de terceros de ESRI, y algo sobre esto no le gusta una de estas configuraciones de dibujo en el Inspector de Atributos. No he probado cada ajuste de forma individual para ver qué configuración es, pero cuando los apagué todos (en el cuadro rojo), todo funcionó como un amuleto, y dejé de recibir el mensaje de error anterior en la consola. Si tengo tiempo para fijar la configuración precisa o la combinación de configuraciones, actualizaré la respuesta.

enter image description here

Es una locura, pero para mí la solución fue simplemente eliminar todos los puntos de interrupción en el archivo donde ocurrió el error.

En cuanto a la causa? Creo que presioné accidentalmente una tecla de método abreviado para crear un punto de interrupción en la línea actual. Como eso no fue intencionado, presioné la misma tecla de método abreviado para eliminarlo.

Oh mi querido XCode …

Estaba recibiendo los mismos errores …

 _BSMachError: (os/kern) invalid capability (20) _BSMachError: (os/kern) invalid name (15) 

Estaba llamando a openURL () desde una UIAlertAction

 alert.addAction(UIAlertAction(title: actionTitle, style: .Default) { UIApplication.shared.openURL(url) } 

Aplazar la ejecución del bloque hasta que el siguiente ciclo de ejecución lo arregle …

 alert.addAction(UIAlertAction(title: actionTitle, style: .Default) { OperationQueue.main.addOperation {UIApplication.shared.openURL(url)} } 

Obtenía lo siguiente al proporcionar nuevos datos:

 > _BSMachError: (os/kern) invalid capability (20) > _BSMachError: (os/kern) invalid name (15) 

El error ocurrió cuando se usó un botón para suministrar datos nuevos. Se NSTimer un NSTimer para actualizar y actualizar los datos al regresar de una acción performSegueWithIdentifier . El temporizador se estaba activando y luego se invalidaba inmediatamente después del uso en el momento del retorno. El MSMachError detuvo cuando se quitó el temporizador y – (void)viewWillAppear:(BOOL)animated y (void)viewDidAppear:(BOOL)animated se emplearon para realizar la misma función. Este error comenzó con la actualización a Xcode 7.

Resolví este problema cambiando el valor de la clave de Localization native development region de Localization native development region a United Kingdom [o cualquier región específica] de su valor predeterminado en presente en info.plist de su proyecto.

  1. Seleccionar Project Navigator
  2. Ubique el archivo info.plist presente en la carpeta ProjectNameTests.
  3. Cambiar el valor de la Localization native development region key de Localization native development region key a cualquier región específica para, p. Ej. Reino Unido

Paso 1 y 2

Paso 3

También encontré el mismo problema en una NSOperation ejecutándose en un hilo de fondo y todavía recibía este error porque un UIAlertController todavía se estaba eliminando a sí mismo cuando otra transacción de UI intentaba llevarse a cabo. Modificar mi código para esto solucionó el problema.

 defer { dispatch_async( dispatch_get_main_queue(),{ completion() }) } 

Mucha gente no sabe acerca del aplazamiento: permite completar el scope actual y luego ejecutarlo. Un poco limpio.

Me enfrenté a la misma capacidad inválida de error (20) y nombre inválido (15). Probé las soluciones mencionadas por otros, como:

  • Localización clave de región de desarrollo nativo en info.plist
  • Cambiar la configuración de dibujo en el Inspector de atributos
  • Incluso el diccionario de excepciones ATS alterado en info.plist

Pero ninguna de esas soluciones resolvió mi problema. En realidad, estaba tratando de compartir algún documento, pero generar el documento tomaría algo de tiempo y quería mostrar un UIActivityIndicatorView al usuario hasta que se cargue el documento.

La solución para mi error fue:

 //Create a alertView add UIActivityIndicatorView to it and present it in ViewController dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ //Call method 1 todo background process like getting data dispatch_sync(dispatch_get_main_queue(), ^{ //Call method 2 to update the UI [alert dismissViewControllerAnimated:YES completion:^(void){ //My mistake was: I was calling method 2 over here to update the UI return; }]; }); }); 

Este error comenzó a aparecer después de que agregué algunos observadores:

 NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.keyboardWillHideOrShow(_:)), name:UIKeyboardWillShowNotification, object: nil) NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.keyboardWillHideOrShow(_:)), name:UIKeyboardWillHideNotification, object: nil) 

El problema desapareció cuando especifiqué el nombre de la clase en lugar de él self :

 NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(MyClass.keyboardWillHideOrShow(_:)), name:UIKeyboardWillShowNotification, object: nil) NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(MyClass.keyboardWillHideOrShow(_:)), name:UIKeyboardWillHideNotification, object: nil) 

Cambiar la cadena de localización de en a Estados Unidos me solucionó esto. Sin embargo, asegúrese de limpiar después de cambiar Info.plist. Me di cuenta de que las actualizaciones no funcionan cuando solo comstack después de hacer cambios plist. enter image description here

En mi caso, era Little Snitch, estaba bloqueando las URL automáticamente.

Podría reproducir el error por mí: si un make cambia a una de las Vistas dentro de una Vista que ya estoy cerrando (popViewControllerAnimated), recibo el error.

Tengo una acción UINavigationButton que realiza una tarea asincrónica (POSTRequest). Antes de realizar esta solicitud, configuro la vista personalizada de ese botón como un indicador de progreso. Cuando regreso de la llamada asincrónica, envío al hilo principal y restablezco la vista personalizada de ese botón. Después de eso, estoy cerrando la vista (popViewControllerAnimated).

Este es el código CORRECTO donde el error no aparece:

 /* right way, working without BSMachError */ @IBAction func sendRequest(sender: UIBarButtonItem) { /* setting the progress indicator as customView of the self.saveButton */ self.showActivityIndicatory(self.saveButton) /* asynchronous REST call */ UserDataManager.sharedInstance.requestFeedback(request, onCompletion: { error in dispatch_async(dispatch_get_main_queue(),{ /* resetting the saveButton again to default by setting customView to nil */ self.saveButton.customView = nil /* closing the view */ self.navigationController!.popViewControllerAnimated(true) }) }) } 

Lo que causó el error fue cambiar de línea: cerrando la vista y luego configurando la vista personalizada en cero:

 /* WRONG way, causing BSMachError */ @IBAction func sendRequest(sender: UIBarButtonItem) { /* setting the progress indicator as customView of the self.saveButton */ self.showActivityIndicatory(self.saveButton) /* asynchronous REST call */ UserDataManager.sharedInstance.requestFeedback(request, onCompletion: { error in dispatch_async(dispatch_get_main_queue(),{ /* closing the view */ self.navigationController!.popViewControllerAnimated(true) /* resetting the saveButton again to default by setting customView to nil */ self.saveButton.customView = nil }) }) } 

Tuve el mismo error y ninguno de los anteriores se aplicó a mi problema. El problema apareció cuando registré mi controlador de visualización como observador en un cambio de orientación del dispositivo, por lo que las vistas podrían cambiar de tamaño y los dibujos en la vista podrían hacerse de acuerdo con el nuevo tamaño de la vista.

Tenía una salida de un viewGraph que era una subclase de UIView en la que dibujaba algunos gráficos. En el modo horizontal, el tamaño del viewGraph es mayor que en el modo vertical. Entonces, cuando el dispositivo cambia su orientación, el speedGraph necesita ser redibujado.

El problema era que agregué varias subvistas a la vista speedGraph, que contenía gráficos. Estas subvistas deben replantearse en la vista speedGraph y luego volver a dibujarse. Después de que el dispositivo cambió su orientación, llamé a viewDidAppear nuevamente para hacer que la vista speedGraph y todas sus subvistas se replanteen y vuelvan a dibujar. Llamar a setNeedsDisplay para speedGraph no funciona con cambios de orientación y subvistas en una vista.

¿Qué hice mal que causó que aparezca el error? En viewDidAppear llamo a un método que hace algunos cálculos y agrega las subvistas a la vista speedGraph. El problema era que estas subvistas se crearon en el método y se agregaron a la vista speedGraph en este método. Después de abandonar el método, las referencias a estas subvistas son, por supuesto, eliminadas, pero las subvistas en la vista speedGraph permanecen, ya que se agregan. Cuando el dispositivo cambia, las subvistas se crean de nuevo y se agregan a la vista speedGraph, que ya tiene estas subvistas, pero ya no puede encontrar las referencias a estas subvistas. El conjunto de subvistas de la vista de velocidadGraph se hace más y más largo con (creo) subvistas que cuelgan.

Resolví el problema definiendo las subvistas que se agregarán a la vista speedGraph como una propiedad de clase y luego hago lo que se debe hacer con las vistas dentro de este método. Con este cambio, el problema desapareció.

La razón por la que algunos desarrolladores no obtienen el error que regresó después de cambiar de “Estados Unidos” a “en” (o) otra región, es que hay discrepancias entre las vistas “Lista de propiedades” y “Código fuente”. Probablemente sea un error de Xcode. Siempre que haya una discrepancia entre estas dos vistas arrojará este error, sea lo que sea “en” o “inglés”. Si cambió a “en” o “Estados Unidos” para que ambas vistas sean iguales, se solucionará el problema.

Como podemos publicar todas las situaciones que devuelven el mismo error aquí, me sentí en libertad de publicar el mío :). Recibí el error cuando cambié la configuración de privacidad en segundo plano. Mi aplicación abrió la aplicación de configuración para que el usuario pueda otorgarle permiso para su fototeca, cuando se establece el permiso, la aplicación falla con el error mencionado:

 _BSMachError: (os/kern) invalid capability (20) _BSMachError: (os/kern) invalid name (15) 

Esto parece ser un reinicio forzado de su aplicación por parte del sistema operativo, porque el usuario cambió a lo que puede acceder su aplicación. Entonces, en mi caso, es una acción del SO quien causó el error.

@property (assign, nonatomic) NSNumber *aVariable; el mismo mensaje de error, porque assign una propiedad de object como @property (assign, nonatomic) NSNumber *aVariable; , arreglado cambiando a strong

Por lo que vale, parece que muchas situaciones arrojan este error. En mi caso, había publicado una alerta cuando el usuario descartaba un formulario de entrada de datos y los datos estaban en el formulario. Pude eliminar el error al resignar programáticamente el primer respondedor de todos los campos aplicables antes de desenrollar el controlador de vista.

Vi esto cuando presioné el botón Home mientras se mostraba un UIAlertController , que se UIAlertController cuando UIAlertController la aplicación. UIAlertController código para descartar el UIAlertController en la aplicaciónDelegate:

 func applicationWillResignActive(application: UIApplication) { window?.rootViewController?.dismissViewControllerAnimated(false, completion: nil) } 

y el mensaje de error desapareció

Tuve este error al descartar un popover a través de un delegado. En DelegateMethod activé algunas GUI-Stuff. Poner la GUI-Stuff en la terminaciónBlock of dismissViewControllerAnimated lo solucionó.

 [myPopoverView dismissViewControllerAnimated:YES completion:^{ //GUI-Stuff}]; 

Soy un principiante en esto, así que toma esto por lo que vale.

Lo que solucionó esto fue cambiar las Métricas simuladas> Tamaño> a iPad Pantalla completa. Todos mis puntos de vista, EXCEPTO para el que arrojó este error, configuramos la pantalla completa del iPad. Cuando lo cambié, el error desapareció …

Recibí este error de:

 var promptsArr = StartRegAlerts() //Instance of the class 

etc

 func textFieldDidBeginEditing(textField: UITextField) { switch textField.tag { case 0: alert(promptsArr.prompts["Name"]!) case 1: alert(promptsArr.prompts["CellPhone"]!) case 4: alert2(promptsArr.prompts["NUMBERCORRECT"]!) //alert(promptsArr.prompts["Wait4Pin"]!) default: break } It only occurred for case 0 but not the other cases: As a work around for now I commented out case 0 and that stopped the error. I then changed calling promptsArr.prompts by: 

creando un nuevo prompt de diccionario y:

  override func viewDidAppear(animated: Bool) { prompt = promptsArr.prompts // } 

y luego utilizo el prompt en mis llamadas de alerta. Eso solucionó el problema.

Entonces parece que es un problema de tiempo.

con Xcode 8.1 e iOs 10 también me enfrenté

_BSMachError: (os / kern) capacidad no válida (20)

_BSMachError: (os / kern) nombre no válido (15)

tratando de anular la var de UiTraiCollection para cambiar en tiempo de ejecución las clases de iPad para tener dos diseños de interfaz diferentes en Portraid y Landscape. Funcionó sin ningún tipo de caída, pero genera nuestros errores.

Este fue el código “malicioso”:

 override public var traitCollection: UITraitCollection { if UIDevice.currentDevice().userInterfaceIdiom == .Pad && UIDevice.currentDevice().orientation.isPortrait.boolValue { return UITraitCollection(traitsFromCollections:[UITraitCollection(horizontalSizeClass: .Compact), UITraitCollection(verticalSizeClass: .Regular)]) } return super.traitCollection } 

Los errores pasaron al override func viewWillTransition como alternativa para detectar la rotación de la interfaz.

Espero que esto sea útil para alguien