programing

오류 메시지 '_BSMachError: (os/kern) 잘못된 기능(20)'

magicmemo 2023. 5. 6. 14:32
반응형

오류 메시지 '_BSMachError: (os/kern) 잘못된 기능(20)'

이 오류 메시지는 매우 낮은 수준이므로 다른 시나리오에서 다양한 이유로 표시됩니다.아래 답변 중 하나에 언급되지 않은 시나리오가 있는 경우 상황을 추가하는 것도 고려해 보십시오. 그러면 이 오류 메시지가 발생하는 다양한 상황에 대한 중심적인 답변이 될 수 있습니다.

2015년 11월 10일 편집 참고로, 저는 제 자신의 답변을 답변으로 표시했지만, 그것은 다른 사람이 게시하기 이었습니다.아무 것도 답으로 표시해서는 안 될 것 같습니다. 왜냐하면 지금 우리가 아래에서 보았듯이...이 오류는 매우 낮은 수준이기 때문에 답이 하나만 있는 것이 아닙니다.

나는 달립니다

  • iOS 9.0 시뮬레이터
  • XCode 7.0

어제는 모든 것이 잘 작동했습니다.

오늘, 회전과 관련된 많은 작업 후에, 시뮬레이터에서 앱을 실행하고 회전시키면 콘솔 출력에 이 오류가 발생하기 시작했습니다.

_BSMachError: (os/kern) 잘못된 기능(20)

_BSMachError: (os/kern) 잘못된 이름(15)

이 문제에 대한 스크린샷 빌드 폴더를 지웠습니다. 파생 데이터 폴더를 지웠습니다. 시뮬레이터를 재설정했습니다.

저는 같이 일했습니다.

  • UIViewController viewWillLayoutSubviews
  • UIViewController viewWillTransitionToSize:...

IB의 Attributes Inspector에서 다양한 'Drawing' 설정도 확인하고 있었습니다.

또한 UIView에서 유틸리티 카테고리를 만들었습니다. 여기서 저는 많은 방법을 만들었습니다.CGRect보기에 프레임을 할당하는 데 도움이 됩니다.

루트 뷰 컨트롤러

루트 보기 컨트롤러 설정

https://forums.developer.apple.com/thread/15683 을 기반으로 합니다.

에서 "현지화 네이티브 개발 지역" 변경info.plist대신미로으 en.

업데이트됨:그런 다음 이러한 변경 사항을 원래대로 되돌릴 수 있습니다.

나는 또한 우연히._BSMachError 9의 Settings 딥가 발생했습니다.UIAlertController액션.adispatch_async문제를 했습니다.

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

좋아요, 완전히 고정하진 않았지만, 99% 정도는 갈 수 있을 거예요.ESRI의 타사 지도 컨트롤을 사용하고 있는데, 속성 관리자에서 이러한 도면 설정 중 하나가 마음에 들지 않습니다.각 설정이 어떤 설정인지 개별적으로 확인해본 적은 없지만, (빨간색 상자에서) 모두 끄면 모든 것이 매력적으로 작동하여 콘솔에 위의 오류 메시지가 표시되지 않습니다.정확한 설정이나 설정의 조합에 맞출 시간이 있으면 답변을 업데이트하겠습니다.

여기에 이미지 설명 입력

말도 안 되는 일이지만 저에게 해결책은 오류가 발생한 파일의 모든 중단점을 제거하는 것이었습니다.

원인은?현재 줄에 중단점을 만들기 위해 실수로 단축키를 누른 것 같습니다.의도하지 않았기 때문에 같은 단축키를 다시 눌러 삭제했습니다.

오 나의 사랑하는 XCode...

저도 같은 오류가...

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

는 openURL()에서 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)}
 }

새로운 데이터를 제공할 때 다음과 같은 정보를 얻었습니다.

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

새 데이터를 제공하기 위해 버튼을 사용할 때 오류가 발생했습니다.안 안NSTimer에서 돌아올 때 데이터를 새로 고치고 업데이트하는 데 사용되었습니다.performSegueWithIdentifier.되었습니다.타이머가 활성화된 후 반환 시 사용 즉시 비활성화되었습니다.MSMachError타이머가 제거되었을 때 중지되었습니다. 그리고 -(void)viewWillAppear:(BOOL)animated그리고.(void)viewDidAppear:(BOOL)animated동일한 기능을 수행하기 위해 사용되었습니다.7로 되었습니다. Xcode 7은 Xcode 7입니다.

는 값을변경하여해문다니습결의 값을 하여 이 했습니다.Localization native development region에 대한 열쇠.United Kingdom [또는 임의의 특정 지역] 기본값에서en에 있는info.plist당신의 프로젝트의.

  1. 를 선택합니다.Project Navigator
  2. 찾기info.plistProjectNameTests는 프로젝트 이름입니다.
  3. 의 값 Localization native development region key를 들어 특정 지역으로.영국

1단계 및 2단계

3단계

백그라운드 스레드에서 실행 중인 NS 작업에서도 동일한 문제가 발생했지만 다른 UI 트랜잭션이 발생하려고 할 때 UIAlertController가 여전히 자체적으로 제거되고 있었기 때문에 이 오류가 여전히 발생했습니다.내 코드를 이것으로 수정한 것이 문제를 해결했습니다.

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

많은 사람들이 연기에 대해 알지 못합니다. 연기는 현재 범위를 완료한 다음 실행합니다.깔끔하네요.

잘못된 기능(20)과 잘못된 이름(15)에 동일한 오류가 발생했습니다.저는 다음과 같은 다른 사람들이 언급한 솔루션을 시도했습니다.

  • info.plist의 현지화 네이티브 개발 지역 키
  • 속성 관리자에서 도면 설정 변경
  • info.plist의 ATS 예외 사전도 변경되었습니다.

하지만 그 어떤 해결책도 제 문제를 해결하지 못했습니다.사실 문서를 공유하려고 했는데 문서를 생성하는 데 시간이 좀 걸려 UIAactivity를 표시하려고 했습니다.시간 문서가 로드될 때까지 사용자에게 표시합니다.

제 실수에 대한 해결책은 다음과 같습니다.

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

현지화 문자열을 en에서 미국으로 변경하여 이 문제를 해결했습니다.그러나 Info.plist를 변경한 후에는 반드시 청소해야 합니다.리스트 변경 후 빌드만 하면 업데이트가 작동하지 않습니다.여기에 이미지 설명 입력

제 경우에는 리틀 스니치였는데, URL을 자동으로 차단하고 있었습니다.

오류를 재현할 수 있습니다. 이미 닫고 있는 보기에서 보기 중 하나를 변경하면(팝뷰 컨트롤러 애니메이션) 오류가 발생합니다.

비동기 작업(POSTRequest)을 수행하는 UINavigationButton 작업을 수행하고 있습니다.이 요청을 수행하기 전에 해당 버튼의 customView를 진행 표시기로 설정합니다.비동기 호출에서 돌아오면 메인 스레드로 전송하고 해당 버튼의 customView를 재설정합니다.그런 다음 보기를 닫습니다(팝뷰 컨트롤러 애니메이션).

오류가 나타나지 않는 올바른 코드는 다음과 같습니다.

/* 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를 0으로 설정하는 것입니다.

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

일부 관찰자를 추가한 후 이 오류가 발생하기 시작했습니다.

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)

저는 같은 오류를 가지고 있었고 위의 사항들은 제 문제에 적용되지 않았습니다.디바이스 방향 변경에 대한 관찰자로 뷰 컨트롤러를 등록했을 때 문제가 발생하여 뷰의 크기를 조정하고 뷰의 도면을 새로운 크기에 따라 작성할 수 있었습니다.

저는 그래픽을 그리는 UIV View의 하위 클래스인 뷰 그래프의 아웃렛을 가지고 있었습니다.가로 모드에서는 그래프 보기의 크기가 세로 모드보다 큽니다.따라서 장치가 방향을 변경할 때 속도 그래프를 다시 그려야 합니다.

문제는 그래픽이 포함된 speedGraph 뷰에 여러 개의 하위 뷰를 추가했다는 것입니다.이러한 하위 보기는 속도 그래프 보기에서 새로 배치한 다음 다시 그려야 했습니다.장치가 방향을 변경한 후에 viewDidInd를 다시 호출하여 속도 그래프 보기와 모든 하위 보기를 새로 배치하고 직접 다시 그립니다.setNeedsDisplay for speedGraph 호출이 뷰의 방향 변경 및 하위 뷰에서 작동하지 않습니다.

제가 무엇을 잘못해서 오류가 발생했습니다.ViewDidAppear에서 나는 몇 가지 계산을 수행하고 speedGraph 뷰에 하위 뷰를 추가하는 메서드를 호출합니다.문제는 이러한 하위 보기가 메소드에서 생성되고 이 메소드에서 speedGraph 보기에 추가되었다는 것입니다.메서드를 종료한 후 이러한 하위 보기에 대한 참조는 물론 삭제되지만 추가되므로 속도 그래프 보기의 하위 보기는 그대로 유지됩니다.장치가 변경되면 하위 보기가 다시 생성되고 이미 이러한 하위 보기가 있지만 더 이상 이러한 하위 보기에 대한 참조를 찾을 수 없는 속도 그래프 보기에 추가됩니다.speedGraph 뷰의 서브뷰 배열은 서브뷰가 흔들리면서 점점 길어집니다.

speedGraph 보기에 추가될 하위 보기를 클래스 속성으로 정의한 다음 이 메서드 내의 보기로 수행해야 할 작업을 수행하여 문제를 해결했습니다.이 변화로 문제가 사라졌습니다.

여기에 같은 오류를 반환하는 모든 상황을 게시할 수 있기 때문에, 저는 자유롭게 제 것을 게시할 수 있었습니다 :).백그라운드에서 개인 정보 설정을 변경할 때 오류가 발생했습니다.사용자가 사진 라이브러리에 권한을 부여할 수 있도록 내 앱이 설정 앱을 열었는데, 권한 스위치가 설정되면 앱이 축소 오류와 함께 충돌합니다.

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

사용자가 앱에 액세스할 수 있는 내용을 변경했기 때문에 OS에서 앱을 강제로 다시 시작한 것으로 보입니다.따라서 저의 경우 오류를 발생시킨 것은 OS의 조치입니다.

같은 오류 메시지를 받았습니다. 왜냐하면 저는assign a object 같은 @property (assign, nonatomic) NSNumber *aVariable; 수정된여경수로 변경하여 합니다.strong.

가치가 있는 것은 - 많은 상황들이 이 오류를 던지는 것처럼 보입니다.저의 경우, 사용자가 데이터 입력 양식을 해제하고 데이터가 양식에 있을 때 경고를 게시했습니다.뷰 컨트롤러를 풀기 전에 모든 해당 필드에서 첫 번째 응답자를 프로그래밍 방식으로 사임시킴으로써 오류를 제거할 수 있었습니다.

제가 이걸 눌렀을 때 봤어요.Home을 누르면서UIAlertController앱을 다시 시작할 때 삭제된 메시지가 표시되었습니다.나는 코드를 추가하여 그것을 제거했습니다.UIAlertController에 시대에appDelegate:

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

오류 메시지가 사라졌습니다.

대리인을 통해 팝업을 해제할 때 이 오류가 발생했습니다.위임 메서드에서 일부 GUI-Stuff를 트리거했습니다.dismissViewControllerAnimated의 완료 블록에 GUI-Stuff를 넣는 것이 수정되었습니다.

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

저는 이 일을 처음 하는 사람이니까 이것을 가치 있는 것으로 받아들이세요.

이 문제를 해결한 것은 시뮬레이션 메트릭 > 크기 > iPad 전체 화면으로 변경한 것입니다.이 오류를 발생시킨 것을 제외한 모든 보기를 iPad 전체 화면으로 설정했습니다.내가 그것을 바꾸었을 때, 오류가 사라졌습니다...

일부 개발자가 "United States"에서 "en"(또는) 다른 지역으로 변경한 후 오류가 발생하지 않는 이유는 "Property list" 보기와 "Source code" 보기가 일치하지 않기 때문입니다.아마 Xcode 버그일 겁니다.이 두 보기 사이에 불일치가 있을 때마다 "en" 또는 "English"에 관계없이 이 오류가 발생합니다.두 보기가 동일하도록 "en" 또는 "United States"로 변경한 경우 에서는 문제를 해결합니다.

이 오류는 다음에서 발생했습니다.

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

경고 호출에 프롬프트를 사용했습니다.그것이 문제를 해결했습니다.

그래서 그것은 타이밍 문제로 보입니다.

Xcode 8.1과 iOS 10을 사용하여 저는 또한 직면했습니다.

_BSMachError: (os/kern) 잘못된 기능(20)

_BSMachError: (os/kern) 잘못된 이름(15)

UiTraiCollection var를 재정의하여 런타임에 iPad의 크기 클래스를 Portraid 및 Landscape에서 두 개의 서로 다른 인터페이스 레이아웃으로 변경하려고 합니다.충돌 없이 작동했지만 오류가 발생했습니다.

이것은 "말리키오스" 코드였습니다.

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인터페이스 회전을 감지하는 대안으로 사용할 수 있습니다.

나는 이것이 누군가에게 유용하기를 바랍니다.

저의 경우, 오류의 원인은 크기 조정 때문입니다.IB에 내장.예를 들어 줄 길이를 변경하는 등 텍스트 필드의 크기를 변경할 수 있는 모든 것은 이러한 오류로 이어질 수 있습니다.제 경우에는 상자 크기를 조정하여 다른 항목과 충돌할 필요가 없도록 모든 가능성을 포함하도록 텍스트 필드 크기를 조정해야 했습니다.

언급URL : https://stackoverflow.com/questions/32899586/error-message-bsmacherror-os-kern-invalid-capability-20

반응형