Какао-приложение не загружает представления или не выполняет код на High Sierra - PullRequest
0 голосов
/ 31 января 2019

У меня есть приложение в Mac AppStore, и многие пользователи недавно написали, что оно не работает в High Sierra (возможно, 10.13.6, из него сложно извлечь конкретную информацию).Мне удалось воспроизвести проблему на устройстве друга, однако я не смогу использовать устройство для сборки с Xcode и т. Д.

Проблема, похоже, в том, что NSViewController не загружает свои подпредставления ввсе!Контроллер серого вида, показанный ниже , должен иметь выпадающие списки и кнопки .bug

Я также заметил, что закрытие серого окна не закрывает красное прозрачное окно - в Мохаве код для выполнения этого работает, как ожидалось.Пользовательский ярлык / пункт меню в строке состояния также не отображается для запуска кода, к которому он привязан.Обратите внимание, что красное окно представлено с помощью кода из серого окна, поэтому некоторый код удается запустить.

Этот неопределенный поток , кажется, упоминает ту же проблему, этот вопрос .Однако ни один из них не просит программного решения.

Кто-нибудь знает, как это исправить, или мне нужно сказать своим пользователям обновить их ОС?

Редактировать : удалось скомпилировать в High Sierra, и представления по-прежнему не отображаются (и их нет в отладчике представлений).Консоль говорит:

2019-02-02 16:53:41.602178+1100 Translate This[20410:36446120] -[NSMenu setItemArray:]: unrecognized selector sent to instance 0x604000069180
2019-02-02 16:53:41.602366+1100 Translate This[20410:36446120] Failed to set (contentViewController) user defined inspected property on (NSWindow): -[NSMenu setItemArray:]: unrecognized selector sent to instance 0x604000069180
2019-02-02 16:54:57.678247+1100 Translate This[20410:36446120] -[NSStoryboard _bundle]: unrecognized selector sent to instance 0x600000000660
2019-02-02 16:54:57.728849+1100 Translate This[20410:36446120] -[NSStoryboard _bundle]: unrecognized selector sent to instance 0x600000000660

0x604000069180 - это NSMenu.Я явно не делаю ни одной из вещей, описанных в выводе консоли в моем коде.

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

gdub ответил правильно в моем случае!

Обратите внимание, однако, что для меня проблема не была вызвана основным NSMenu окна (которое действительно было установлено с помощью раскадровки), но у нас быловсплывающая кнопка (NSPopupButton), которая тоже использует NSMenu внутри, и которую мы инициализировали с items = [...], а не с помощью вызова addItem () в цикле.Это было просто неочевидно, потому что это было во внутреннем настраиваемом NSView, поэтому мне потребовались часы, чтобы выкопать его.

Я согласен, что основной проблемой является Xcode, который не говорит, что вам нужно, если @available 10.14 для установки элементов, но для временного решения, пожалуйста, просто проверьте свой код, чтобы увидеть, устанавливаете ли вы где-нибудь NSMenu.items, и включите его в цикл с помощью addItem.Вы упомянули, что у вас есть всплывающие кнопки (как и у нас), поэтому я надеюсь, что вы сможете исправить это и ваше приложение снова будет работать на 10.13.

0 голосов
/ 14 февраля 2019

У меня была та же ошибка с простым приложением строки меню, построенным на macOS 10.14, но при запуске на более ранних версиях ОС произошла ошибка:

[NSMenu setItemArray:]: unrecognized selector sent to instance

При просмотре файла заголовка дляNSMenu Я вижу:

/* Returns an array containing the receiver's menu items. 
   This property is settable in macOS 10.14 and later. */
open var items: [NSMenuItem]

Таким образом, вы не можете установить menu.items = someItemsArray, а вместо этого использовать другие apis (menu.addItem(item), menu.removeAllItems() и т. Д.), Чтобы решить проблему.

Похоже, что это упущение Apple в Xcode 10, так как он не предупреждает вас о том, что его нельзя установить в зависимости от цели развертывания вашего приложения.

https://openradar.appspot.com/45517851

...