para objective framework for development desarrollador app ios objective-c xcode7

ios - framework - objective c documentation



Mensaje de error ''_BSMachError:(os/kern) capacidad no vĂ¡lida(20)'' (24)

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: entonces puede revertir estos cambios.

Tenga en cuenta que este mensaje de error es de nivel bastante bajo, por lo que surge por diferentes razones 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 hubiera publicado. Supongo que ninguno debería marcarse realmente como la respuesta, porque como hemos visto a continuación ... este error no tiene solo una respuesta porque es de muy 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 en cosas relacionadas con la rotación, comencé a recibir este error en la salida de mi consola cuando ejecuto la aplicación en el Simulador y la giro.

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

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

- He borrado mi carpeta de compilación, - He limpiado la carpeta de datos derivados, - He reiniciado el simulador.

Estaba trabajando con

  • UIViewController viewWillLayoutSubviews
  • UIViewController viewWillTransitionToSize:...

También estaba comprobando varias configuraciones de ''Dibujo'' en el Inspector de Atributos en IB.

También hice una categoría de utilidad en UIView donde creé un montón de métodos que crean CGRect y me ayudan a asignar marcos a las vistas.


Cambiar la cadena de localización de en a United States me arregló esto. Sin embargo, asegúrese de limpiar después de cambiar Info.plist. Me di cuenta de que las actualizaciones no funcionan cuando solo construyes después de hacer cambios de plist.


Como podemos publicar todas las situaciones que devuelven el mismo error aquí, me sentí libre 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 a su fotolibrary, cuando se establece el interruptor de permiso, la aplicación se bloquea con el error medido:

_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ó lo que su aplicación puede acceder. Entonces, en mi caso, fue una acción del sistema operativo quien causó el error.


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


En mi caso, la causa del error se debió al cambio de tamaño. Construido en IB. Creo que cualquier cosa que pueda cambiar el tamaño de un campo de texto o similar, por ejemplo, cambiar la longitud de la línea, puede conducir a este error. En mi caso, simplemente tuve que ajustar el tamaño del campo de texto para cubrir todas las posibilidades para que no sea necesario cambiar el tamaño del cuadro y entrar en conflicto con otra cosa.


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 accidentalmente presioné una tecla de acceso directo para crear un punto de interrupción en la línea actual. Debido a que no fue intencional, presioné la misma tecla de acceso directo nuevamente para eliminarlo.

Oh mi querido XCode ...


Estaba obteniendo 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 datos al regresar de una acción performSegueWithIdentifier . El temporizador se activaba y luego se invalidaba inmediatamente después de su uso en el momento de devolución. 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.


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) }

Aplazando 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)} }


Este error comenzó a aparecer después de agregar 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 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)


Este problema se solucionó 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] desde su valor predeterminado en presente en info.plist de su proyecto.

  1. Seleccione Project Navigator
  2. Busque 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, por ejemplo. Reino Unido


La razón por la que algunos desarrolladores no reciben el error volvió después de cambiar de "Estados Unidos" a "en" (u) otra región, es que existe una discrepancia entre las vistas de "Lista de propiedades" y "Código fuente". Probablemente sea un error de Xcode. Siempre que haya una falta de coincidencia entre estas dos vistas, se generará este error, sea lo que sea "en" o "inglés". Si ha cambiado a "en" o "Estados Unidos" para que ambas vistas sean iguales, solucionará el problema.


Me enfrenté al mismo error de capacidad no válida (20) y nombre no válido (15). Probé las soluciones mencionadas por otros como:

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

Pero ninguna de esas soluciones resolvió mi problema. En realidad, estaba tratando de compartir algún documento, pero generar el documento llevaría algún 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; }]; }); });


Ok, no lo he anclado por completo, pero esto te llevará al 99% del camino. Estoy usando un control de mapa de terceros de ESRI, y algo al respecto no le gusta una de estas configuraciones de dibujo en el Inspector de atributos. No he probado cada configuración individualmente para ver qué configuración es, pero cuando las apagué todas (en el cuadro rojo), todo funcionó de maravilla, y dejé de recibir el mensaje de error anterior en la consola. Si tengo tiempo de fijarlo en la configuración precisa o la combinación de configuraciones, actualizaré la respuesta.


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

Estoy teniendo una acción UINavigationButton que realiza una tarea asincrónica (POSTRequest). Antes de realizar esta solicitud, configuré la vista personalizada de ese botón en un indicador de progreso. Al regresar de la llamada asincrónica, despacho 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: cerrar la vista y luego configurar customView en nil:

/* 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 }) }) }


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


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


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 indicador de diccionario y:

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

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

Entonces parece que es un problema de tiempo.


Soy un novato en esto, así que tómalo por lo que vale.

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


También me encontré con el mismo problema en una operación NSO que se ejecutaba en un subproceso en segundo plano y todavía recibía este error porque un UIAlertController todavía se eliminaba a sí mismo mientras otra transacción de IU intentaba tener lugar. Modificar mi código a esto solucionó el problema.

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

Mucha gente no sabe acerca de diferir: permite completar el alcance actual y luego se ejecuta después. Un poco ordenado


También me encontré con los errores de la consola _BSMachError mientras hacía un enlace profundo 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]]; }); }]];


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

Tenía una salida de viewGraph, que era una subclase de UIView en la que dibujaba algunos gráficos. En modo horizontal, el tamaño de viewGraph es más grande que en modo vertical. Entonces, cuando el dispositivo cambia su orientación, se debe volver a dibujar el speedGraph.

El problema era que agregué varias subvistas a la vista de SpeedGraph, que contenía gráficos. Estas subvistas debían presentarse nuevamente en la vista de SpeedGraph y luego volverse a dibujar. 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 presentaran de nuevo y se volvieran a dibujar. Llamar a setNeedsDisplay para speedGraph no funciona con cambios de orientación y subvistas en una vista.

¿Qué hice mal que causó la aparición del 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 se eliminan, por supuesto, pero las subvistas en la vista speedGraph permanecen, ya que se agregan. Cuando el dispositivo cambia, las subvistas se crean nuevamente y se agregan a la vista speedGraph, que ya tiene estas subvistas, pero ya no puede encontrar las referencias a estas subvistas. La variedad de subvistas de la vista speedGraph se hace cada vez más larga con (creo) subvistas colgantes.

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


Tuve este error al descartar un popover a través de delegado. En el delegateMethod activé algunas GUI-Stuff. Poniendo el GUI-Stuff en la terminación Bloqueo de despedirViewControllerAnimated lo arregló.

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


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

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

y el mensaje de error desapareció.


con Xcode 8.1 y 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 UiTraiCollection var para cambiar en tiempo de ejecución las clases de tamaño del iPad para tener dos diseños de interfaz diferentes en Portraid y Landscape. Funcionó sin ningún bloqueo, pero generó nuestros errores.

Este fue el código "maliciuos":

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 desaparecidos usando la override func viewWillTransition como alternativa para detectar la rotación de la interfaz.

Espero que esto sea útil para alguien