Обратите внимание, что это сообщение об ошибке довольно низкого уровня, поэтому оно возникает по разным причинам в разных сценариях. Если у вас есть сценарий, который не упомянут ни в одном из ответов ниже, рассмотрите возможность добавления вашей ситуации, так что, возможно, это может быть центральным ответом для различных ситуаций, которые вызывают это сообщение об ошибке.
Редактировать 10 ноября 2015 г. Кроме того, обратите внимание, я пометил свой собственный ответ как ответ, но это было до того, как кто-то еще опубликовал. Я думаю, что ни один из них не должен быть помечен как ответ, потому что, как мы видели ниже ... у этой ошибки нет только одного ответа, потому что это очень низкий уровень.
я бегу
- iOS 9.0 Симулятор
- XCode 7.0
Вчера все работало нормально.
Сегодня, после множества работ, связанных с вращением, я начал получать эту ошибку в выводе консоли, когда я запускаю приложение в симуляторе и поворачиваю его.
_BSMachError: (os / kern) недопустимая возможность (20)
_BSMachError: (os / kern) неверное имя (15)
- Я очистил свою папку сборки, - Я очистил папку производных данных, - Я сбросил симулятор.
Я работал с
UIViewController viewWillLayoutSubviews
UIViewController viewWillTransitionToSize:...
Я также проверял различные настройки «Рисования» в Инспекторе Атрибутов в IB.
Я также создал категорию утилит в UIView, где я создал несколько методов, которые создают CGRect
и помогают мне назначать фреймы представлениям.
источник
MyFoodTracker
: PОтветы:
На основании https://forums.developer.apple.com/thread/15683 :
Поменяйте « Локализация региона собственного развития »
info.plist
на США вместоen
.Обновлено: тогда вы можете отменить эти изменения обратно.
источник
ja
, а неen
. Что я должен делать? Установить этоJapan
?Я также столкнулся с
_BSMachError
ошибками консоли, когда глубоко связывался с приложением «Настройки» на iOS 9 изUIAlertController
действия. Аdispatch_async
решил мою проблему:источник
Хорошо, я не закрепил это полностью, но это даст вам 99% пути. Я использую сторонний элемент управления картой из ESRI, и что-то в этом не нравится одному из этих параметров рисования в Инспекторе Атрибутов. Я не пробовал каждый параметр по отдельности, чтобы увидеть, какой он установлен, но когда я выключил их все (в красном поле), все заработало как чудо, и я перестал получать сообщение об ошибке выше в консоли. Если и когда у меня будет время прибить его к точной настройке или комбинации настроек, я обновлю ответ.
источник
Это безумие, но для меня решение было просто удалить все точки останова в файле, где произошла ошибка.
Что касается причины? Я думаю, что случайно нажал комбинацию клавиш, чтобы создать точку останова в текущей строке. Поскольку это было непреднамеренно, я снова нажал ту же самую клавишу быстрого вызова, чтобы удалить ее.
О мой дорогой XCode ...
источник
Я получал те же ошибки ...
Я звонил openURL () из
UIAlertAction
Отсрочка выполнения блока до следующего цикла выполнения исправила его ...
источник
При получении новых данных я получал следующее:
Ошибка произошла, когда кнопка использовалась для ввода новых данных. An
NSTimer
использовался для обновления и обновления данных после возвращения изperformSegueWithIdentifier
действия. Таймер был активирован и затем недействителен сразу после использования во время возврата.MSMachError
Прекращается , когда таймер был удален и -(void)viewWillAppear:(BOOL)animated
и(void)viewDidAppear:(BOOL)animated
были использованы для выполнения той же функции. Эта ошибка началась с обновления до Xcode 7.источник
Я исправил эту проблему, изменив значение
Localization native development region
ключа наUnited Kingdom
[или любой конкретный регион] со значения по умолчанию,en
присутствующего вinfo.plist
вашем проекте.Project Navigator
info.plist
файл в папке ProjectNameTests.Localization native development region key
на любой конкретный регион, например. объединенное Королевствоисточник
BSMachError
. Переключение региона наUnited States
устранение ошибки. Еще одна необъяснимая загадка Xcode.Я также столкнулся с той же проблемой в NSOperation, работающем в фоновом потоке, и я все еще получал эту ошибку, потому что UIAlertController все еще удалял себя, поскольку другая транзакция UI пыталась иметь место. Модификация моего кода для решения этой проблемы.
Многие люди не знают об отсрочке. Она позволяет завершить текущую область, а затем запускается после. Вроде аккуратно.
источник
Я столкнулся с той же ошибкой: недопустимая возможность (20) и неверное имя (15). Я пробовал решения, упомянутые другими, такие как:
Но ни одно из этих решений не решило мою проблему. На самом деле, я пытался поделиться каким-то документом, но создание документа заняло бы некоторое время, и я хотел отобразить UIActivityIndicatorView для пользователя до момента загрузки документа.
Решение для моей ошибки было:
источник
Изменение строки локализации с en на Соединенные Штаты исправило это для меня. Тем не менее, убедитесь, что вы очистите после изменения Info.plist. Я заметил, что обновления не работают, когда вы просто строите после внесения изменений в plist.
источник
В моем случае это был Little Snitch, он автоматически блокировал URL.
источник
Я мог бы воспроизвести ошибку для меня: если внесение изменений в одно из представлений в представлении, которое я фактически уже закрываю (popViewControllerAnimated), я получаю сообщение об ошибке.
У меня есть действие UINavigationButton, которое выполняет асинхронную задачу (POSTRequest). Перед выполнением этого запроса я установил для customView этой кнопки индикатор прогресса. При возвращении из асинхронного вызова я отправляю в основной поток и сбрасываю customView этой кнопки. После этого я закрываю представление (popViewControllerAnimated).
Это ПРАВИЛЬНЫЙ код, где ошибка не появляется:
Причиной ошибки было переключение строк: закрытие представления, а затем установка customView равным nil:
источник
Эта ошибка начала появляться после того, как я добавил некоторых наблюдателей:
Проблема исчезла, когда я указал имя класса вместо
self
:источник
У меня была та же ошибка, и ни одна из вышеперечисленных не применима к моей проблеме. Проблема возникла, когда я зарегистрировал свой контроллер вида в качестве наблюдателя за изменением ориентации устройства, поэтому размеры видов можно было изменить, а рисунки на виде можно было сделать в соответствии с новым размером вида.
У меня был выход viewGraph, который был подклассом UIView, в котором я рисовал некоторую графику. В ландшафтном режиме размер viewGraph больше, чем в портретном режиме. Поэтому, когда устройство меняет свою ориентацию, необходимо перерисовать speedGraph.
Проблема заключалась в том, что я добавил несколько подпредставлений в представление speedGraph, которое содержало графику. Эти подпредставления необходимо заново выложить в представлении speedGraph, а затем перерисовать. После того, как устройство изменило свою ориентацию, я снова вызвал viewDidAppear, чтобы заново отобразить представление speedGraph и все его подпредставления и перерисовать их. Вызов setNeedsDisplay для speedGraph не работает с изменениями ориентации и подпредставлениями в представлении.
Что я сделал не так, что привело к появлению ошибки. В viewDidAppear я вызываю метод, который выполняет некоторые вычисления и добавляет подпредставления в представление speedGraph. Проблема заключалась в том, что эти подпредставления были созданы в методе и были добавлены в представление speedGraph в этом методе. После выхода из метода ссылки на эти подпредставления, конечно, удаляются, но подпредставления в представлении speedGraph остаются, поскольку они добавлены. Когда устройство меняется, подпредставления создаются снова и добавляются в представление speedGraph, которое уже имеет эти подпредставления, но больше не может найти ссылки на эти подпредставления. Массив подпредставлений представления speedGraph становится длиннее и длиннее с (я думаю) висящими подпредставлениями.
Я решил проблему, определив подпредставления, которые будут добавлены в представление speedGraph как свойство класса, а затем сделайте то, что нужно сделать с представлениями внутри этого метода. С этим изменением проблема исчезла.
источник
Так как мы можем публиковать все ситуации, возвращающие одну и ту же ошибку, я не стесняюсь публиковать мои :). Ошибка при изменении настроек конфиденциальности в фоновом режиме. Мое приложение открыло приложение настроек, чтобы пользователь мог предоставить ему разрешение для своей фотобиблиотеки. Когда переключатель разрешения установлен, приложение вылетает с ошибкой:
Похоже, это принудительный перезапуск вашего приложения операционной системой, потому что пользователь изменил доступ к вашему приложению. Так что в моем случае это действие ОС, вызвавшее ошибку.
источник
Я получил такое же сообщение об ошибке, потому что
assign
вobject
собственности , как@property (assign, nonatomic) NSNumber *aVariable;
, закрепленное за счет изменения вstrong
.источник
Для чего это стоит - кажется, что многие ситуации выдают эту ошибку. В моем случае я разместил предупреждение, когда пользователь отклонял форму ввода данных, и данные были в форме. Мне удалось устранить ошибку, программно отменив первый ответчик из всех применимых полей, прежде чем раскрутить контроллер представления.
источник
prepareForSegue()
он не вызывается, и я не знаю, где оставить первого респондента.Я видел это, когда нажимал
Home
кнопку во времяUIAlertController
отображения a , которая была закрыта при повторном запуске приложения. Я добавил код для отклоненияUIAlertController
вappDelegate
:и сообщение об ошибке исчезло.
источник
У меня была эта ошибка при отклонении поповера через делегата. В методе делегата я вызвал некоторые GUI-вещи. Помещение GUI-Stuff в завершениеБлок dismissViewControllerAnimated исправил это.
источник
Я новичок в этом, поэтому примите это за то, что оно того стоит.
Для меня это исправило изменение симулированной метрики> размера> на полноэкранный режим iPad. Все мои взгляды, КРОМЕ того, что выкинуло эту ошибку, мы установили на iPad Full Screen. Когда я его изменил, ошибка ушла ...
источник
Причина, по которой некоторые разработчики не получают сообщение об ошибке после перехода с «Unites States» на «en» (или) в другом регионе, заключается в том, что существует несоответствие между представлениями «Список свойств» и «Исходный код». Это, вероятно, ошибка Xcode. Всякий раз, когда есть несоответствие между этими двумя представлениями, выдает эту ошибку, независимо от того, является ли она "en" или "английским". Если вы изменили «en» или «United States», чтобы оба представления были одинаковыми, проблема будет устранена.
источник
Я получил эту ошибку от:
и т.д
создание нового словарного приглашения и:
а потом использовал подсказку в моих звонках. Это решило проблему.
Таким образом, похоже, что это проблема времени.
источник
с Xcode 8.1 и iOs 10 я тоже сталкивался
_BSMachError: (os / kern) недопустимая возможность (20)
_BSMachError: (os / kern) неверное имя (15)
пытаясь переопределить UiTraiCollection var, чтобы изменить во время выполнения классы размера iPad, чтобы иметь два разных макета интерфейса в Portraid и Landscape. Он работал без сбоев, но генерировал наши ошибки.
Это был код "maliciuos":
Ошибки, использованные в
override func viewWillTransition
качестве альтернативы для обнаружения поворота интерфейса.Надеюсь это кому-нибудь пригодится
источник
В моем случае причиной ошибки было изменение размера. Построен в ИБ. Все, что может изменить размер текстового поля или подобное, например, изменение длины строки, может привести к этой ошибке, я считаю. В моем случае мне просто пришлось отрегулировать размер текстового поля, чтобы охватить все возможности, чтобы не нужно было изменять размер поля и конфликтовать с чем-то другим.
источник