В вашем коде выражение native2[NSFontAttributeName]
имеет неизвестный тип и, следовательно, тип id
. Компилятор позволит вам отправлять объект типа id
любому сообщению без жалоб, но у него нет контекста для определения типа возвращаемого значения сообщения.
Вы хотите получить свойство leading
для NSFont
, но компилятор просто случайным образом выбирает любой селектор свойства leading
, и я предполагаю, что в итоге он выбрал свойство leading
для NSCollectionLayoutEdgeSpacing
, которое имеет тип возврата NSCollectionLayoutSpacing
, а не float
.
Я подозреваю, что приведение выражения [(NSFont*)(native2[NSFontAttributeName]) leading]
поможет, но если бы я писал этот код, я бы просто сослался на оригинальный (типизированный) объект, поскольку он у вас уже есть:
float lineGap = nativefont.leading;