web-dev-qa-db-ja.com

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

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

編集2015年11月10日また、私は自分の答えを答えとしてマークしましたが、それは他の誰かが投稿する前のことです。私たちが今以下に見てきたように...なぜなら、答えとしてマークされるべきではないと思います。

私は走っています

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

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

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

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

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

Screenshot for this issue - ビルドフォルダをクリアしました - 派生データフォルダをクリーンアップしました - シミュレータをリセットしました。

私は働いていた

  • UIViewController viewWillLayoutSubviews
  • UIViewController viewWillTransitionToSize:...

私はIBのAttributes Inspectorで様々な 'Drawing'設定をチェックしていました。

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

Root View Controller

Root View Controller Settings

170
Logicsaurus Rex

わかりました、私はそれを完全に固定していません、しかしこれはあなたがそこに行く方法の99%を得るでしょう。私はESRIのサードパーティ製マップコントロールを使用していますが、それについては、Attributesインスペクタのこれらの描画設定のいずれかとは異なります。それぞれの設定を個別に試して設定を確認することはしませんでしたが、(赤いボックス内で)すべての設定をオフにすると、すべてがうまくいったので、コンソールに上記のエラーメッセージが表示されません。正確な設定や設定の組み合わせに釘付けになる時間があれば、答えを更新します。

enter image description here

31
Logicsaurus Rex

https://forums.developer.Apple.com/thread/15683 に基づいて:

info.plistの "地域対応ネイティブ開発地域"をenではなく米国に変更します。

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

143
blacharnia

私はまた、UIAlertControllerアクションからiOS 9のSettingsアプリに深くリンクしている間に_BSMachErrorコンソールエラーに遭遇しました。 dispatch_asyncは私の問題を解決しました:

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

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

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

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

14
agro1986

私は同じエラーを受けていました...

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

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

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)}
 }
11
Murray Sagal

新しいデータを提供すると、次のようになりました。

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

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

9
Patt

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

  1. Project Navigatorを選択
  2. ProjectNameTestsフォルダーに存在するinfo.plistファイルを見つけます。
  3. Localization native development region keyの値を特定の地域に変更します(例:United Kingdom)

Step 1 and 2

Step 3

6

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

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

多くの人は延期について知らない - それは現在のスコープを完成させてから実行します。キンダはきちんとしている。

4
Kellen Styler

私は同じエラー無効な機能(20)&無効な名前(15)に直面しました。私はそのような他の人が述べたように解決策を試してみました:

  • Info.plistのローカライゼーションネイティブ開発領域キー
  • 属性インスペクタで描画設定を変更する
  • Info.plistのATS例外辞書さえ変更された

しかし、これらの解決策のどれも私の問題を解決しませんでした。実際に、私はいくつかのドキュメントを共有しようとしていましたが、ドキュメントを生成するには時間がかかり、ドキュメントがロードされるまで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;
    }];
});
});
4
1218GG

ローカライズ文字列をenからUnited Statesに変更したことで、これは修正されました。ただし、Info.plistを変更した後は、必ずクリーニングしてください。 plistを変更した後にビルドしただけではアップデートがうまくいかないことに気付きました。 enter image description here

3
AlphaCodaSeven

私の場合はLittle Snitchで、URLを自動的にブロックしていました。

2
Vaibhav Mishra

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

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

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

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

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

2
MacUserT

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

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

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

2
MQoder

私は私のためにエラーを再現することができます:私がすでに閉じているビュー内のビューの1つに変更を加えると(popViewControllerAnimated)エラーを受け取ります。

非同期タスク(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
Miaumi

いくつかオブザーバを追加した後、このエラーがポップアップし始めました。

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
Fook

私はからこのエラーを得ました:

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
Jeremy

"Unites States"から "en"(または)他の地域に変更してもエラーが発生しない開発者がいるのは、 "Property list"ビューと "Source code"ビューに矛盾があるためです。おそらくXcodeのバグです。これら2つのビューの間に不一致があるときはいつでも、それが "en"または "English"であるものは何でも、このエラーを投げます。両方のビューが同じになるように「en」または「United States」に変更した場合は、問題が解決します。

1
Nay

それが価値があるもののために - それは多くの状況がこのエラーを投げているようです。私の場合は、ユーザーがデータ入力フォームを却下し、データがフォームに入っていたときにアラートを送信しました。 View Controllerを巻き戻す前に、該当するすべてのフィールドからプログラムでファーストレスポンダを辞任することで、このエラーを解消することができました。

1
user2698617

assignname__プロパティを@property (assign, nonatomic) NSNumber *aVariable;のようなobjectname__プロパティに変更し、strongname__に変更することで修正したため、同じエラーメッセージが表示されました。

1
Allen

私はこれで初心者ですので、それが価値があるもののためにこれを取ります。

これを修正したのは、Simulated Metrics> Size>をiPad Full Screenに変更したことです。このエラーを投げたものを除いて、私の見解はすべてiPad Full Screenに設定しました。私がそれを変更したとき、エラーは消えました...

1
user1045302

デリゲート経由でポップオーバーを却下すると、このエラーが発生しました。 delegateMethodでは、私はいくつかのGUIを起動しました。 dismissViewControllerAnimatedのcompletionBlockにGUI-Stuffを配置することで修正されました。

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

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

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

そしてエラーメッセージは消えた。

1
emrys57

私が直面していたXcode 8.1とiOs 10でも

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

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

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

これは "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
Swalsz

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

0
Terence K