Почему cra sh, когда я устанавливаю значение CGFloat в AssociatedObject, назначая политику в Swift? - PullRequest
0 голосов
/ 24 марта 2020
static var testValue = 1
objc_setAssociatedObject(self, &testValue, 10.1, .OBJC_ASSOCIATION_ASSIGN)
objc_getAssociatedObject(self, &testValue)

Когда я выполню третью строку кода, он обработает sh, но когда я изменю значение, которое я хочу установить на 10 (или 10.0) , он может успешно получить Значение. Почему это случилось?

1 Ответ

0 голосов
/ 24 марта 2020

Связанные значения хранят элементы размером с указатель (обычно восемь байтов). Когда вы попытаетесь прочитать его, он прочитает элемент размером с указатель и перезапишет восемь байтов памяти. Если используемая переменная имеет размер только четыре байта, тогда четыре байта случайной памяти перезаписываются со всеми видами последствий.

...