Другие ответы не совсем объясняют, что здесь происходит, поэтому это основная проблема:
Когда вы пишете blackKey.center.x
, blackKey.center
и center.x
оба выглядят как доступ к элементам структуры, но на самом деле они совершенно разные вещи.blackKey.center
- это доступ к свойству, который десугарсирует что-то вроде [blackKey center]
, который, в свою очередь, десугарсует что-то вроде objc_msgSend(blackKey, @selector(center))
.Вы не можете изменить возвращаемое значение функции, например objc_msgSend(blackKey, @selector(center)).x = 2
- оно просто не имеет смысла, потому что возвращаемое значение не хранится где-либо значащим.
Так что если выЧтобы изменить структуру, необходимо сохранить возвращаемое значение свойства в переменной, изменить переменную, а затем установить для свойства новое значение.