Проблемы с проектом после обновления до High Sierra


#1

Добрый день.
Обновился вчера до macOS High Sierra на свою голову :slight_smile:

С проектом возникли проблемы которых на просто Siera не было.

1 Есть NSImageView. В него бросаем фото, оно открывается и затем рисуем поверх прямоугольники с использованием CAShapeLayer (с помощью мыши - mousedown и mouseDragged ). Затем нажимаем на кнопку для подсчета интенсивности внутри этих прямоугольников. Данные подсчета находятся в массиве и обновляем таблицу использующую этот массив. Данные появляются в таблице. НО, прямоугольники вдруг ушли под фото. Сначала вообще ничего не понял, в @IBAction для подсчета ничего связанного с фото нет. Когда же закоментировал обновление таблицы, то прямоугольники остались поверх фото. NSImageView и таблица находятся в одном NSView.

Т.е. обновление таблицы каким то образом отсылает слои прямоугольников в под фото. Кто-нибудь может обьяснить что происходите и что делать.

2 Вторая проблема похожа. В том же NSImageView рисуется сетка с помощью CAShapeLayer. До обновления сетка рисовалась поверх фото когда нажимал на check box. Теперь она рисуется под фото. Есть опция поменять цвет сетки с использованием NSColorWell. Если сетка нарисована то выбирая цвет можно было поменять ее цвет. Все работает цвет меняется. При этом сейчас, сетка бывшая под фото при выборе друго цвета появляется поверх фото и далее остается там и можно менять цвет.

Что за котовасия происходит не понимаю.

3 Еще одно это изменение это изменение точки вращения 3D объекта в SCNView. До обновления объект вращался вокруг точки находящейся внутри объекта, сейчас после обновления вращается относительно точки далеко от объекта. До обновления я нигде явно точку вращения не задавал. Только то что внизу:

    protein3D.scene = D3ProteinStructure()
    protein3D.backgroundColor = NSColor.black
    protein3D.autoenablesDefaultLighting = true
    protein3D.allowsCameraControl = true  

Что поменять чтобы было по прежнему, когда точка вращения внутри объекта а не снаружи.

Похоже что проблем больше.
Есть NSTextView и для него в контроллере есть @IBOutlet. Если подвести мышь к нему NSTextView подсвечивается голубым как и положено говоря о наличии связи. Но если посмотреть в Connections Inspector то @IBOutlet не привязан к NSTextView и код не работает как положено, текст не появляется в данном NSTextView, если поменять на другой NSTextView то все работает.

Xcode 9 стоял на предыдущей macOS. Видимо после установления новой macOS Xcode 9 работает теперь через пень колоду, не понятно как.


#2

Поставил на чистый диск High Siera и затем Xcode 9. Проект тем не менее скомпилировался опять с теми же непонятными проблемамие. Поскольку есть два варианта проекта, на swift3 и swift4 сконвертированный из swift3 на Sierra, то проверил swift3 вариант без конвертации, который работал без проблем. Он тоже получил те же проблемы.

Вывод, Xcode 9 на High Siera работает некорректно. Потеря связи между NSTextView и @IBOutlet уж точно никак не связана с проектом.


#3

Теперь вылетаете еще и сообщение об ошибке при открытии файла, который открывал без каких либо ошибок наверное сотню раз.

errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled}

Коллеги кто нибудь может пояснить что происходит. Терпение на исходе !!!

перед этой ошибкой появляется еще следующий message

objc[1429]: Class FIFinderSyncExtensionHost is implemented in both /System/Library/PrivateFrameworks/FinderKit.framework/Versions/A/FinderKit (0x7fff8f2aaa70) and /System/Library/PrivateFrameworks/FileProvider.framework/OverrideBundles/FinderSyncCollaborationFileProviderOverride.bundle/Contents/MacOS/FinderSyncCollaborationFileProviderOverride (0x115afdcd8). One of the two will be used. Which one is undefined.

#4

Кто-нибудь пробовал HIígh Sierre вместе с Xcode 9 или никто?


#5

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.


#6

Ну хоть какая та польза от моих мучений :smirk: .

Но как то надо выходить из ситуации, до всяких патчей ждать никакого терпения не хватит.
Кто что посоветует ?


#7

У меня High Sierra и Xcode 9. Всё работает нормально. Проекты отконвертировались с Swift 3 до Swift 4 нормально. Есть два НО:

  1. Я сначала установил Xcode 9 на Sierra. Какое-то время пользовался по такой схеме. Потом обновился до High Sierra.
  2. У меня были/есть проблемы с симулятором. Об этом я писал в отдельной теме.

#8

У меня был тот же путь. Долгое время Sierra и Xcode 8, неделю назад поставил Xcode 9 , сконвертировал проект с Swift 3 на Swift 4 , все нормально и потом поверх поставил High Sierra. Возникли проблемы.

Вы используете CAShapeLayer, NSImageView и SCNView в своем проекте ?


#9

Похоже что reloadData() для NSTableView имеет широкий эффект на другие операции.


#10

Похоже что если не откатываться назад то временное решение это использование виртуальной машины. Под рукой есть ElCapitan. Будет на нем работать Xcode 9 ?


#11

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.


#12

TM я не использую, Sierra меня нет, и в AppStore тоже нет.


#13

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.


#14

Неохото с других мест брать ось. Первый раз при обновлении на Sierra не сохранил себе ее. Есть только ElCapitan.


#15

В первый раз с 2008 года с новой OS проблемы. Экран вдруг стал белым и не реагировал, после esc появились окошки который были открыты, но все они начали мерцать, то появлялись то становились белыми.

Что сказать - не повезло, не надо было обновляться. Количество багов судя по сообщениям большое.


#16

все вроде обновилось нормально, и ось, и Xcode. Единственное, что вижу, так это замедление работы Xcode. Причем оно конкретно заметное - симулятор долго грузится, потом вдруг начинает шуметь вентилятор. Даже выпадающее меню с опциями команд теперь появляется не сразу, а через пару-тройку секунд.

Предполагаю, что это все баги новой версии,. На нервы конечно действует. По идее должны исправляться по ходу.


#17

У меня тоже Xcode 9.0 медленно работал после обновления. У меня терпения не хватило и я поставил Xcode 9.1 beta , стало существенно лучше, да и кроме того он нашел кучу дополнительных замечаний, как например, с characters для string, чего Xcode 9.0 не делал.

Но, описанные выше проблемы с CAShapeLayer остались. Это точно проблемы самой High Sierra поскольку у меня были старые сборки программы скомпилированные на Xcode 8.3 в Sierra, которые работали как надо на Sierra, так вот они тоже теперь как раньше не работают на High Sierra, абсолютно тот же баг.


#18

Поставил обновление для High Sierra и ноль эффекта. Прямоугольники попрежнему уходят под картинку когда есть reloadData() в @IBAction. Если reloadData() убрать то прямоугольники остаются поверх картинки. ААААААА. !!!

Как работает reloadData() ? Может кто пояснить ?

Что касается второй проблемы то тоже все осталось,
Обнаружил что если вместо check box использовать segmented control для двух сегментов то сетка рисуется поверх фото, тогда как если использовать check box то сетка рисуется под фото. Код для сетки идентичен. Это же бред!!! Как может код исполняться по разному ? Логический вывод из этого маразма видимо тот что последовательность обновления содержимого всего окна когда меняется вид check box или segmented control и обновление вида NSImageView происходит по разному.


#19

Может?

layer.zPosition = 100

#20

Попробовал в @IBAction поставить после reloadData()

    tableOfSelectedBands.reloadData()
    gelImageAnalysis.layer?.zPosition = 100.0

не работает, прямоугольника ушли под фото

Что Вы думаете по поводу различий с check box и segmented control