S'il vous plaît noter que ce message d'erreur est assez faible, il apparaît donc pour différentes raisons dans différents scénarios. Si vous avez un scénario qui n'est pas mentionné dans l'une des réponses ci-dessous, pensez également à ajouter votre situation. Cela pourrait donc constituer une solution centrale pour diverses situations qui génèrent ce message d'erreur.
Edit 10 nov. 2015 Notez aussi que j'ai marqué ma propre réponse comme étant la réponse, mais c'était avant que quiconque ait posté. Je suppose qu’aucune d’entre elles ne devrait vraiment être considérée comme la réponse, car comme nous l’avons vu ci-dessous ... cette erreur n’a pas qu'une réponse, car son niveau est si bas.
Je suis entrain de courir
Tout fonctionnait bien hier.
Aujourd'hui, après un tas de travaux sur les éléments liés à la rotation, j'ai commencé à avoir cette erreur dans la sortie de la console lorsque je lance l'application dans le simulateur et que je la fais pivoter.
_BSMachError: (os/kern) capacité invalide (20)
_BSMachError: (os/kern) nom invalide (15)
- J'ai effacé mon dossier de construction, - J'ai nettoyé le dossier de données dérivé, - J'ai réinitialisé le simulateur.
Je travaillais avec
UIViewController viewWillLayoutSubviews
UIViewController viewWillTransitionToSize:...
Je vérifiais également divers paramètres de "Dessin" dans l'inspecteur d'attributs dans IB.
J'ai également créé une catégorie d'utilitaires sur UIView dans laquelle j'ai créé un ensemble de méthodes qui créent des CGRect
et m'aident à attribuer des cadres à des vues.
D'accord, je ne l'ai pas encore complètement épinglé, mais cela vous mènera à 99% du chemin ... .. J'utilise un contrôle de carte tiers d'ESRI, et quelque chose à ce sujet ne vous plait pas. paramètres dans l'inspecteur d'attributs. Je n'ai pas essayé chaque paramètre individuellement pour voir de quel paramètre il s'agit, mais lorsque je les ai tous désactivés (dans la zone rouge), tout a fonctionné comme un charme et j'ai arrêté de recevoir le message d'erreur ci-dessus dans la console. Si et quand j'ai le temps de bien cerner le réglage précis ou la combinaison de réglages, je mettrai à jour la réponse.
Basé sur le https://forums.developer.Apple.com/thread/15683 :
Remplacez "Localization native development region" dans info.plist
par États-Unis au lieu de en
.
Mis à jour: Vous pouvez ensuite annuler ces modifications.
J'ai également rencontré des erreurs de console _BSMachError
lors d'une liaison profonde à l'application Paramètres sur iOS 9 à partir d'une action UIAlertController
. Un dispatch_async
a résolu mon problème:
[aAlertVC addAction:[UIAlertAction actionWithTitle:@"Settings" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
dispatch_async(dispatch_get_main_queue(), ^{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
});
}]];
C'est fou, mais la solution pour moi consistait simplement à supprimer tous les points d'arrêt du fichier où l'erreur s'était produite.
Quant à la cause? Je pense que j'ai accidentellement appuyé sur une touche de raccourci pour créer un point d'arrêt dans la ligne en cours. Parce que ce n'était pas prévu, j'ai appuyé à nouveau sur la même touche de raccourci pour le supprimer.
Oh mon cher XCode ...
Je recevais les mêmes erreurs ...
_BSMachError: (os/kern) invalid capability (20)
_BSMachError: (os/kern) invalid name (15)
J'appelais openURL () depuis une UIAlertAction
alert.addAction(UIAlertAction(title: actionTitle, style: .Default) {
UIApplication.shared.openURL(url)
}
Le report de l'exécution du bloc jusqu'à la prochaine boucle d'exécution l'a corrigé ...
alert.addAction(UIAlertAction(title: actionTitle, style: .Default) {
OperationQueue.main.addOperation {UIApplication.shared.openURL(url)}
}
Je recevais les informations suivantes lors de la fourniture de nouvelles données:
> _BSMachError: (os/kern) invalid capability (20)
> _BSMachError: (os/kern) invalid name (15)
L'erreur s'est produite lorsqu'un bouton a été utilisé pour fournir de nouvelles données. NSTimer
a été utilisé pour actualiser et mettre à jour les données lors du retour d'une action performSegueWithIdentifier
. La minuterie était en cours d'activation, puis invalidée immédiatement après son utilisation au moment du retour. La MSMachError
s'est arrêtée lorsque le chronomètre a été supprimé et - (void)viewWillAppear:(BOOL)animated
et (void)viewDidAppear:(BOOL)animated
ont été utilisés pour exécuter la même fonction. Cette erreur a commencé avec la mise à niveau vers Xcode 7.
J'ai résolu ce problème en modifiant la valeur de Localization native development region
clé en United Kingdom
[ou toute région spécifique] à partir de sa valeur par défaut en
présente dans info.plist
de votre projet.
Project Navigator
info.plist
présent dans le dossier ProjectNameTests.Localization native development region key
en une région spécifique par exemple. Royaume-UniJ'ai également rencontré le même problème dans un NSOperation fonctionnant sur un thread en arrière-plan et je rencontrais toujours cette erreur, car UIAlertController était toujours en train de se supprimer alors qu'une autre transaction d'interface utilisateur tentait de se produire. La modification de mon code à cette résolu le problème.
defer {
dispatch_async( dispatch_get_main_queue(),{
completion()
})
}
Beaucoup de gens ne connaissent pas le différé. Il laisse la portée actuelle se terminer et s’exécute ensuite. Un peu chouette.
J'ai rencontré la même erreur capacité invalide (20) et nom invalide (15). J'ai essayé les solutions mentionnées par d'autres telles que:
Mais aucune de ces solutions n'a résolu mon problème… .. En fait, j'essayais de partager un document, mais générer un document prendrait un certain temps et je voulais afficher un UIActivityIndicatorView à l'utilisateur jusqu'au chargement du document.
La solution à mon erreur était la suivante:
//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;
}];
});
});
Cette erreur a commencé à apparaître après que j'ai ajouté des observateurs:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.keyboardWillHideOrShow(_:)), name:UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.keyboardWillHideOrShow(_:)), name:UIKeyboardWillHideNotification, object: nil)
Le problème a disparu lorsque j'ai spécifié le nom de la classe au lieu 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)
Dans mon cas, c'était Little Snitch, il bloquait automatiquement les URL.
J'ai eu la même erreur et aucun de ce qui précède ne s'est appliqué à mon problème. Le problème est apparu lorsque j'ai enregistré mon contrôleur de vue en tant qu'observateur dans un changement d'orientation du périphérique, ce qui a permis de redimensionner les vues et de dessiner les dessins dans la vue en fonction de la nouvelle taille de la vue.
J'ai eu la sortie d'un viewGraph qui était une sous-classe de UIView dans laquelle j'ai dessiné des graphiques. En mode paysage, la taille du viewGraph est plus grande qu'en mode portrait. Ainsi, lorsque le périphérique change d'orientation, le speedGraph doit être redessiné.
Le problème était que j'ai ajouté plusieurs vues secondaires à la vue speedGraph, qui contenait des graphiques. Ces sous-vues devaient être redéfinies dans la vue speedGraph, puis redessinées. Une fois que le périphérique a changé d'orientation, j'ai de nouveau appelé viewDidAppear pour redéfinir la vue speedGraph et toutes ses sous-vues et les redessiner. L'appel de setNeedsDisplay pour speedGraph ne fonctionne pas avec les changements d'orientation et les sous-vues dans une vue.
Qu'est-ce que j'ai mal fait qui a provoqué l'erreur? Dans viewDidAppear, j'appelle une méthode qui effectue des calculs et ajoute les sous-vues à la vue speedGraph. Le problème était que ces sous-vues avaient été créées dans la méthode et ajoutées à la vue speedGraph dans cette méthode. Après avoir quitté la méthode, les références à ces sous-vues sont, bien sûr, supprimées, mais les sous-vues de la vue speedGraph restent, car elles sont ajoutées. Lorsque le périphérique change, les sous-vues sont à nouveau créées et ajoutées à la vue speedGraph, qui contient déjà ces sous-vues, mais ne trouve plus les références à ces sous-vues. Le tableau de sous-vues de la vue speedGraph devient de plus en plus long avec (je pense) des sous-vues pendantes.
J'ai résolu le problème en définissant les sous-vues qui seront ajoutées à la vue speedGraph en tant que propriété de classe, puis en effectuant ce qu'il fallait faire avec les vues de cette méthode. Avec ce changement, le problème avait disparu.
Puisque nous pouvons publier toutes les situations renvoyant la même erreur ici, je me suis senti libre de poster la mienne :). J'ai eu l'erreur quand j'ai changé les paramètres de confidentialité en arrière-plan. Mon application a ouvert l'application de configuration pour que l'utilisateur puisse lui accorder une autorisation d'accès à sa photothèque. Lorsque le commutateur d'autorisation est défini, l'application se bloque avec l'erreur modifiée:
_BSMachError: (os/kern) invalid capability (20)
_BSMachError: (os/kern) invalid name (15)
Cela semble être un redémarrage forcé de votre application par le système d'exploitation, car l'utilisateur a modifié les éléments auxquels votre application peut accéder. Donc, dans mon cas, c'est une action du système d'exploitation qui a causé l'erreur.
Je pourrais reproduire l'erreur pour moi: Si je modifie déjà l'une des vues dans une vue que je ferme actuellement (popViewControllerAnimated), je reçois l'erreur.
Je subis une action UINavigationButton qui crée une tâche asynchrone (POSTRequest) . Avant d'exécuter cette demande, je règle l'indicateur customView de ce bouton sur un indicateur de progression . et réinitialiser la vue personnalisée de ce bouton . Après cela, je ferme la vue (popViewControllerAnimated).
C'est le code CORRECT où l'erreur n'apparaît pas:
/* 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)
})
})
}
L’erreur a été provoquée par le changement de ligne: fermeture de la vue, puis définition de la personnalisation sur 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
})
})
}
J'ai eu cette erreur 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:
créer un nouveau dictionnaire invite et:
override func viewDidAppear(animated: Bool) {
Prompt = promptsArr.prompts //
}
puis utilisé Invite dans mes appels d’alerte. Cela a résolu le problème.
Il semble donc que ce soit un problème de timing.
La raison pour laquelle certains développeurs ne reçoivent pas l'erreur est revenue après être passée de "États-Unis" à "en" (ou) autre région, c'est qu'il y a une différence entre les vues "Liste de propriétés" et "Code source". C'est probablement un bug Xcode. Chaque fois qu'il y a une discordance entre ces deux vues, cette erreur générera une erreur, qu'il s'agisse de "en" ou de "anglais". Si vous modifiez "en" ou "États-Unis" pour que les deux vues soient identiques, le problème sera résolu.
Pour ce que ça vaut - il semble que beaucoup de situations jettent cette erreur. Dans mon cas, j'avais posté une alerte lorsque l'utilisateur rejetait un formulaire de saisie de données et que les données étaient dans le formulaire. J'ai pu éliminer l'erreur en résiliant par programme le premier intervenant de tous les champs applicables avant de dérouler le contrôleur de vue.
J'ai reçu le même message d'erreur, car je assign
une propriété object
comme @property (assign, nonatomic) NSNumber *aVariable;
, corrigée en passant à strong
.
Je suis un newb à cela alors prenez ceci pour ce qu'il vaut.
Ce qui a résolu le problème pour moi, c’était de changer les métriques simulées> Taille> en iPad plein écran. Tous mes points de vue, SAUF celui qui a lancé cette erreur, sont configurés en mode plein écran pour iPad. Quand j'ai changé, l'erreur est partie ...
J'ai eu cette erreur lors du renvoi d'un popover via un délégué. Dans la méthode delegateMethod, j'ai déclenché un élément graphique GUI . Il a été corrigé.
[myPopoverView dismissViewControllerAnimated:YES completion:^{ //GUI-Stuff}];
Je l'ai vu lorsque j'ai appuyé sur le bouton Home
alors qu'une UIAlertController
était affichée, ce qui a été ignoré lorsque j'ai relancé l'application. J'ai ajouté du code pour supprimer la UIAlertController
dans la appDelegate
:
func applicationWillResignActive(application: UIApplication) {
window?.rootViewController?.dismissViewControllerAnimated(false, completion: nil)
}
et le message d'erreur a disparu.
avec Xcode 8.1 et iOs 10, j'ai également fait face
_BSMachError: (os/kern) capacité invalide (20)
_BSMachError: (os/kern) nom invalide (15)
essayez de remplacer UiTraiCollection var pour modifier au moment de l’exécution les classes iPad en tant que classes afin d’avoir deux dispositions d’interface différentes dans Portraid et Landscape. Cela a fonctionné sans aucun crash mais génère nos erreurs.
C'était le code "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
}
Les erreurs ont disparu en utilisant override func viewWillTransition
comme alternative pour détecter la rotation d'interface.
J'espère que cela sera utile à quelqu'un
Dans mon cas, la cause de l'erreur était due au redimensionnement. Construit en IB. Tout ce qui peut changer la taille d'un champ de texte ou similaire, par exemple changer la longueur d'une ligne, peut conduire à cette erreur, je crois. Dans mon cas, je devais simplement ajuster la taille du champ de texte pour couvrir toutes les possibilités, de sorte qu'il ne soit pas nécessaire de redimensionner la zone et d'entrer en conflit avec autre chose.