エラーメッセージ '_BSMachError:(os / kern)invalid capability(20)'


173

このエラーメッセージはかなり低レベルなので、さまざまなシナリオでさまざまな理由で表示されることに注意してください。以下の回答のいずれにも記載されていないシナリオがある場合は、状況も追加することを検討してください。これは、このエラーメッセージが表示されるさまざまな状況の中心的な回答になる可能性があります。

2015年11月10日編集また、私は自分の回答を回答としてマークしましたが、それは他の誰かが投稿する前でした。以下に見られるように、実際には答えとしてマークされるべきものはないと思います...このレベルは非常に低いため、このエラーには答えが1つだけではありません。

私は走っています

  • iOS 9.0シミュレータ
  • XCode 7.0

昨日はすべてうまくいきました。

今日、ローテーション関連の一連の作業を行った後、シミュレーターでアプリを実行してローテーションすると、コンソール出力にこのエラーが発生し始めました。

_BSMachError:(os / kern)無効な機能(20)

_BSMachError:(os / kern)無効な名前(15)

この問題のスクリーンショット -ビルドフォルダーをクリアしました-派生データフォルダーをクリーニングしました-シミュレーターをリセットしました

私は一緒に働いていました

  • UIViewController viewWillLayoutSubviews
  • UIViewController viewWillTransitionToSize:...

また、IBの属性インスペクターでさまざまな「描画」設定を確認していました。

また、UIViewでユーティリティカテゴリを作成し、を作成してCGRectフレームをビューに割り当てるのに役立つ一連のメソッドを作成しました。

ルートビューコントローラー

ルートビューコントローラーの設定


BLEの作業中にこのエラーが発生します
Nex Mishra 2015年

1
私はまだ解決策を見つけることができません。また、回転させながら解決策を得ています。Xcodeが少量のメモリしか使用していないと報告しているにもかかわらず、すぐにメモリ警告が表示されることもあります。イライラする。
narco

79
あなたが編集したと思いますMyFoodTracker:P
Sam Soffes

8
スクリーンショットでMyFoodTrackerに赤い線が引かれているのはなぜですか?
マリアンチェルニー

2
@LogicsaurusRex「どういう意味ですか?」確かに有用な質問ではありませんが、「修正する必要がありますか?」たぶんもっと良い質問です(私が答えたいのですが)。私のアプリは問題なく動作しているようですが、このエラーが表示されています。私はそれを固定して修正したいのですが、これは小さなアプリではなく、見つけるのに貴重な時間を費やすことになります。
vrwim 2016年

回答:


144

https://forums.developer.apple.com/thread/15683に基づく:

ローカリゼーションのネイティブ開発地域info.plistを米国ではなく米国に変更しenます。

更新:これらの変更を元に戻すことができます。


3
それも私のために働いた。その後、設定を「en」に戻したところ、エラーが返ってこないようです。
Skoua

これは、このエラーが発生する新しいインスタンスとして機能しました。元の投稿をここに投稿したところ、描画チェックボックスの1つが原因でこのエラーが発生していました。それは長い間存在しませんでしたが、今や他の未知の理由で再び出現し始め、これを変更することで実際に修正されました... HOLY COWそれは素晴らしいです。
Logicsaurus Rex

鉱山はに設定されてjaenます。私は何をすべきか?に設定しJapanますか?
Nicolas Miari

1
これはうまくいきました。しかし戻っ再びENに背中やエラーなし😒
ネオIghodaro

30
このような答えはあまり好きではありません。それは何も説明しないので。XCodeのバグですか?コードの配置が間違っていますか?または何?
GeneCode、2016年

66

また_BSMachErrorUIAlertControllerアクションからiOS 9の設定アプリにディープリンクしているときにコンソールエラーが発生しました。Aはdispatch_async私の問題を解決しました:

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

2
これでコンソールエラーは解消されましたが、同時に修正しようとしていたメインのロックアップバグは役に立ちませんでした
Jason

おそらくこの答えを一般化することができますが、uialertcontroller(ほとんど同じコード)でセグエを実行しているときに私は私のものを得ました。おそらく、alertcontrollerがどのように画面から外れるかと関係があります。dispatch_asyncの問題も解決しました。
user3802077

ここで同じ問題-具体的には、UIAlertController内からUIAlertActionのハンドラーを介してアプリ内からシステム設定に移動すると、これは9.2シミュレーターで発生します。古いUIAlertViewではなくUIAlertControllerにコードを書き直したとき、シムは同じ_BSMachエラーをスローしました(15、20)。実際のデバイス(iPad)では発生しませんでした。Dispatch_asyncはシミュレータを幸せにしました。間違いなくUIAlertControllerに関連しています。
Mike Kogan

同じ問題が再び頭をもたげました。今回はシムではなく、iPadではなくシムです。今回は、macherrorsを引き起こしたPDFコンテキストにビューをレンダリングしたのはいくつかのコードでした。再びdispatch_asyncが修正しました。また、UIAlertControllerのUIAlertActionの完了ハンドラーから呼び出されずにこのコードが実行された場合、このエラーが発生しないことも確認しました。どちらの場合も、エラーはXCodeデバッグコンソールでのみ表示され、アプリは正しく実行され続けました。このスレッドで提案されているローカリゼーションのアイデアは、いずれのシナリオにも影響を与えませんでした。
Mike Kogan

@ジェイソン私は同じ問題があり、コンソールのエラーメッセージを削除しましたが、それでもクラッシュします。なんとか解決できましたか?
bp14 '12年

32

OK、完全には固定していませんが、これで99%の確率で到達できます。ESRIのサードパーティマップコントロールを使用していますが、属性インスペクターのこれらの描画設定の1つが好きではありません。私は各設定を個別に試してどの設定であるかを確認していませんが、すべてをオフにすると(赤いボックスで)、すべてが魅力的に機能し、コンソールに上記のエラーメッセージが表示されなくなりました。正確な設定または設定の組み合わせに釘付けになる時間があれば、答えを更新します。

ここに画像の説明を入力してください


あなたの答えはかなり良いと思います。ただし、上部の太字のテキストは削除します。最近、回答の匿名の投票が非常に多くなりました。個人的なものではないかと思います。
Jason D

これらのいずれかを使用する必要がある場合はどうなりますか?
Zaraki

15

クレイジーですが、私にとっての解決策は、エラーが発生したファイル内のすべてのブレークポイントを削除することでした。

原因は?誤ってショートカットキーを押して現在の行にブレークポイントを作成したと思います。それは意図されていなかったので、同じショートカットキーをもう一度押して削除しました。

ああ、私の親愛なるXCode ...


これでうまくいきました。これが問題だったことの1つの手がかりは、Xcodeがブレークポイントのない行で壊れることでした。次に、別の行で上記の_BSMachErrorsを取得しました。
2016年

12

同じエラーが発生しました...

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

からopenURL()を呼び出していました UIAlertAction

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

次の実行ループで修正されるまでブロックの実行を延期します...

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

9

新しいデータを提供するときに、次の情報が得られました。

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

新しいデータを提供するためにボタンが使用されたときに、エラーが発生しました。AnがNSTimerから戻ったときにデータを更新し、更新するために使用されたperformSegueWithIdentifierアクション。タイマーはアクティブ化されていたため、使用後すぐに無効になりました。MSMachErrorタイマーが削除されたときに停止して- (void)viewWillAppear:(BOOL)animated(void)viewDidAppear:(BOOL)animated同じ機能を実行するために採用されました。このエラーは、Xcode 7へのアップグレードで始まりました。


6

私はの値変更することにより、固定この問題だLocalization native development regionとキーをUnited Kingdom [または任意の特定の領域]のデフォルト値からenに存在するinfo.plistプロジェクトの。

  1. 選択する Project Navigator
  2. info.plistProjectNameTestsフォルダーにあるファイルを見つけます。
  3. の値をLocalization native development region key特定のリージョンに変更しますイギリス

ステップ1および2

ステップ3


はい、この修正はクレイジーに聞こえますが、うまくいきます。私にとって、このアプリは、Xcode 7.3.1がテザリングされたiPod touch第5世代に展開されたときに機能しました。しかし、最初にXcodeからテザリングされたiPad Airに展開されたとき、これに遭遇しましたBSMachErrorUnited Statesエラーを解消するためのリージョンの切り替え。さらに別の不可解なXcodeの謎。
バジルブルク2016

4

また、バックグラウンドスレッドで実行されているNSOperationで同じ問題に遭遇しましたが、UIAlertControllerがまだ別のUIトランザクションが実行されようとしているため、UIAlertControllerがそれ自体を削除していたため、このエラーが発生しました。これを修正してコードを修正すると、問題が解決しました。

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

多くの人々は据え置きについて知らない-それは現在のスコープを完了させ、その後実行します。ちょっとすっきり。


4

私は同じエラー無効機能(20)と無効な名前(15)に直面しました。私は次のような他の人が言及した解決策を試しました:

  • info.plistのローカリゼーションネイティブ開発リージョンキー
  • 属性インスペクターで描画設定を変更する
  • info.plistのATS Exception Dictionaryも変更

しかし、これらの解決策のどれも私の問題を解決しませんでした。実際、私はいくつかのドキュメントを共有しようとしていましたが、ドキュメントの生成には時間がかかり、ドキュメントが読み込まれるまでUIActivityIndi​​catorViewをユーザーに表示したいと考えました。

私のエラーの解決策は:

//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;
    }];
});
});

すばらしい、私のために働いた!UIの更新はdispatch_get_main_queue()で行う必要があることを知っておくことが重要
MkaysWork 2016年

3

ローカリゼーション文字列をenからUnited Statesに変更すると、これが修正されました。ただし、Info.plistを変更した後は、必ずクリーンアップしてください。plistを変更した後にビルドしただけでは、アップデートが機能しないことに気づきました。ここに画像の説明を入力してください



2

エラーを再現できます。実際に閉じているビュー(popViewControllerAnimated)内のビューの1つを変更すると、エラーが発生します。

非同期タスク(POSTRequest)を作成するUINavigationButtonアクションがあります。このリクエストを実行する前に、そのボタンのcustomViewを進行状況インジケーターに設定します。非同期呼び出しから戻ってきたら、メインスレッドにディスパッチして、そのボタンのcustomViewをリセットします。その後、ビュー(popViewControllerAnimated)を閉じます。

これはエラーが表示されない正しいコードです:

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

エラーの原因は行の切り替えでした。ビューを閉じてから、customViewを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
      })
    })
}

2

このエラーは、オブザーバーを追加した後にポップアップし始めました:

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

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

次の代わりにクラス名を指定すると、問題はなくなりました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)

2

私は同じエラーがあり、上記のどれも私の問題に適用されませんでした。ビューコントローラーをデバイスの向きの変更のオブザーバーとして登録したときに問題が発生したため、ビューのサイズを変更し、ビューの図面をビューの新しいサイズに従って作成できました。

私はいくつかのグラフィックスを描画したUIViewのサブクラスであるviewGraphのアウトレットを持っていました.landscapeモードでは、viewGraphのサイズが縦モードよりも大きくなっています。そのため、デバイスの向きが変わると、speedGraphを再描画する必要がありました。

問題は、speedGraphビューにグラフィックを含むいくつかのサブビューを追加したことです。これらのサブビューは、speedGraphビューで新たにレイアウトしてから再描画する必要がありました。デバイスがその向きを変更した後、viewDidAppearを再度呼び出して、speedGraphビューとそのすべてのサブビューを新たにレイアウトし、再描画します。speedGraphのsetNeedsDisplayの呼び出しは、ビューの向きの変更とサブビューでは機能しません。

エラーが表示される原因となった問題は何ですか。viewDidAppearで、いくつかの計算を実行し、サブビューをspeedGraphビューに追加するメソッドを呼び出します。問題は、これらのサブビューがメソッドで作成され、このメソッドのspeedGraphビューに追加されたことです。メソッドを終了すると、これらのサブビューへの参照はもちろん削除されますが、追加されたため、speedGraphビューのサブビューは残ります。デバイスが変更されると、サブビューが再度作成され、speedGraphビューに追加されます。このビューには、すでにこれらのサブビューがありますが、これらのサブビューへの参照はもう見つかりません。speedGraphビューのサブビューの配列は、ぶら下がっているサブビューを使用すると、だんだん長くなります。

speedGraphビューに追加されるサブビューをクラスプロパティとして定義し、このメソッド内のビューで実行する必要があることを行うことで、問題を解決しました。この変更により、問題はなくなりました。


2

ここでは同じエラーを返すすべての状況を投稿できるため、私は自由に投稿できます:)。バックグラウンドでプライバシー設定を変更するとエラーが発生しました。アプリが設定アプリを開いたので、ユーザーはフォトライブラリにパーミッションを付与できます。パーミッションスイッチが設定されていると、アプリが次のエラーでクラッシュします。

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

ユーザーがアプリがアクセスできるものを変更したため、これはOSによるアプリの強制的な再起動のようです。だから私の場合、それはエラーを引き起こしたOSのアクションです。


これも手に入れました。したがって、これは実際にはバグではありません。アプリがXcodeに接続されていない場合、恐ろしいことは何も起こりません。ありがとう、あなたは私のデバッグ時間を数時間節約するかもしれません。
yuji

1

私ので、私は、同じエラーメッセージが表示されましたプロパティのようなに変更することで固定し、。assignobject@property (assign, nonatomic) NSNumber *aVariable;strong


1

価値があることについては、多くの状況でこのエラーがスローされるようです。私の場合、ユーザーがデータ入力フォームを閉じ、フォームにデータがあったときにアラートを投稿しました。ビューコントローラーを巻き戻す前に、該当するすべてのフィールドから最初のレスポンダーをプログラムで再署名することで、エラーを排除できました。


これも私が抱えている問題ですが、ビューコントローラーはナビゲーションコントローラーのナビゲーションバーから戻るボタンによって閉じprepareForSegue()られるため、呼び出されず、最初のレスポンダーをどこに辞任するのかわかりません。
TimSim

1

が表示されているときにHomeボタンを押すとUIAlertController、これを確認しました。これは、アプリを再起動すると消えました。を閉じるコードを追加しUIAlertControllerましたappDelegate

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

エラーメッセージが消えました。


1

デリゲートを介してポップオーバーを閉じると、このエラーが発生しました。delegateMethodで、GUIスタッフをトリガーしました。GUIスタッフをdismissViewControllerAnimatedのcompletionBlockに配置すると修正されました。

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

1

私はこれが初心者なので、これだけの価値があると考えてください。

この問題を解決したのは、[シミュレーションメトリック]> [サイズ]> [iPadフルスクリーン]に変更したためです。このエラーをスローしたビューを除くすべての私のビューは、iPadフルスクリーンに設定しました。変更するとエラーは消えました...


1

一部の開発者が「Unites States」から「en」(または)リージョンに変更した後にエラーが返されない理由は、「プロパティリスト」と「ソースコード」のビューに不一致があるためです。おそらくXcodeのバグです。これら2つのビューの間に不一致がある場合は、「en」または「English」が何であれ、このエラーがスローされます。両方のビューを同じにするために「en」または「United States」に変更した場合、問題が修正されます。


1

私はこのエラーを受け取りました:

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

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:

新しい辞書プロンプトを作成し、:

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

アラートコールでプロンプトを使用しました。これで問題が解決しました。

したがって、タイミングの問題であるようです。


私はそれがしばらくの間だけ機能し、その後再び現れたと思います-したがって、ケース1をコメントアウトしてから、後でそのアラートを呼び出すことで問題が解決したようです。
ジェレミー

0

Xcode 8.1とiOs 10で私も直面しました

_BSMachError:(os / kern)無効な機能(20)

_BSMachError:(os / kern)無効な名前(15)

UiTraiCollection変数をオーバーライドして、実行時にiPadのサイズクラスを変更し、PortraidとLandscapeに2つの異なるインターフェイスレイアウトを設定する。クラッシュすることなく機能しましたが、エラーが発生しました。

これは「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
}

エラーはoverride func viewWillTransition、インターフェースの回転を検出するための代替手段として使用されなくなりました。

これが誰かに役立つことを願っています


0

私の場合、エラーの原因はサイズ変更によるものでした。内蔵IB。テキストフィールドのサイズを変更できるようなもの、たとえば行の長さを変更するようなものは、このエラーを引き起こす可能性があると私は信じています。私の場合、すべての可能性をカバーするようにテキストフィールドのサイズを調整するだけでよいので、ボックスのサイズを変更したり、他のものと競合したりする必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.