Как отключить автоучет в Delphi XE7?
Система, над которой я работаю, создала свою собственную единицу подсчета ref, но она конфликтует с Delphi. Я пытался сделать его совместимым с условиями компилятора, но все равно наткнулся на несколько ошибок, которые, как мне кажется, могут быть вызваны тем, что ARC все еще включен.
1 ответ:
Просто, вы не можете глобально отключить Delphi compiler ARC на платформах, где он поддерживается (в настоящее время Android и iOS).
Однако, дуга может быть обойден в код для конкретной ссылки.
Компиляторы ARC вводят атрибуты
[weak]
и[unsafe]
.
[weak]
может использоваться для маркировки слабых ссылок, которые не участвуют в подсчете ссылок, но вам все равно потребуется иметь по крайней мере одну сильную ссылку, чтобы сохранить объект живым. Слабые ссылки также устанавливаются вnil
, когда объект уничтожен.
[unsafe]
может быть использован для полного поворота подсчета ссылок для конкретной ссылки, но он предназначен для использования в редких случаях, и он запретит вам смешивать подсчитанные и несчитанные ссылки, что приведет к очень ограниченному использованию.Также не учитываются параметры, объявленные как
const
иvar
.