2014-01-12 1 views
1

Ниже приведен необъяснимый пример в Stephen G. Kochan. «Программирование на Objective-C».asterisk в операторе типов

id   myNumber; 
Fraction *myFraction; 
  ... 
myFraction = (Fraction *) myNumber; 

Что Функция * внутри оператора типа отлитого? Что произойдет, если звездочка была удалена от оператора типа отлитого?

myFraction = (Fraction) myNumber; 
+0

Звездочка относится к указателю объекта, например, NSString. если вы использовали что-то вроде int, вам не понадобится звездочка, поскольку это не объект объектива-c –

ответ

1

«Фракция» может рассматриваться как структура - множество байтов, упакованных вместе. Добавление звездочки говорит, что переменная является всего лишь указателем на эту структуру, например, как 8-байтовый адрес вместо всей структуры.

S внутренние структуры неловко проходят по конвенциям (а позже и по закону) мы проходим вокруг указателей.

В вашем конкретном случае литье не требуется вообще - «id» автоматически преобразуется в другие типы, поэтому это просто бесполезная словесность. Стивен Кочан ошибся.