Тёмный

Qt Android. QML уроки #18. Охота за багами при передаче указателя на QObject в QML 

EVILEG
Подписаться 4,1 тыс.
Просмотров 873
50% 1

Статья по видеоуроку: evileg.com/ru/...
Одними из самых мерзких и мало предсказуемых багов являются те, которые возникают в неопределённый момент времени. К числу таких можно отнести баг, который проявляется при передаче указателя на QObject в QML слой. Проблема заключается в том, что если у QObject отсутствует родитель, то при передаче в слой QML происходит смена владельца объекта, то есть ему устанавливается JavaScriptOwnership. В итоге, когда в QML слое пропадут все ссылки на данный объект, то он будет удалён сборщиком мусора QML. Соответственно, все ссылки в C++ слое окажутся невалидными. А приложение при попытке обращения по этим ссылкам молча схлопнется, ничего не сообщив о причине краха.

Опубликовано:

 

2 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 3   
@alewarten
@alewarten 6 лет назад
Интересное видео. Спасибо. Но что, если слот предназначен только для генерации и возрата модели. А контроллер, содержащий слот, живет все время работы программы, получается, что объекты будут жить так же до конца работы программы, если им установить парент. Думаю в этом случае его как раз не надо устанавливать.
@EVILEG
@EVILEG 6 лет назад
+Ruslan G Думаю, что это уже будут нюансы разработки. Просто стоит учитывать такое поведение Qt в рамках работы связки qml и C++, чтобы потом не удивляться внезапным падениям программы
@alewarten
@alewarten 6 лет назад
Это да
Далее
Провал со стеклянным хлебом…
00:41
Лучше одной, чем с такими
00:54
Просмотров 851 тыс.
Провал со стеклянным хлебом…
00:41