Тип интерфейса не может быть статически выделен? - PullRequest
39 голосов
/ 11 декабря 2011

Я попытался поместить это в заголовочный файл моего объекта просмотра:

@property (nonatomic) UIColor color;

, чтобы сохранить цвет, которым должны быть нарисованы линии в этом представлении.

Xcode дает мнеошибка в этой строке:

Тип интерфейса не может быть назначен статически

Что это значит и что мне делать?

РЕДАКТИРОВАТЬ:

Я добавил *, и в момент синтеза он сказал:

ARC запрещает синтезировать свойство объекта Objective C с неопределенным атрибутом владения или хранения?

Ответы [ 3 ]

75 голосов
/ 11 декабря 2011

Ваша переменная предназначена для типа объекта, и поэтому она должна быть объявлена ​​как указатель:

@property (nonatomic) UIColor * color;    // Note the asterisk

«Статически распределенная» в этом случае будет означать, что память для этого объекта была выделена при компиляции.время.Однако все объекты в Obj-C выделяются во время выполнения и доступны через указатели.

«Тип интерфейса» является своего рода слишком техническим термином, который имеет значение для компилятора и не очень важен здесь.Это означает, что UIColor представляет интерфейс , через который компилятор ожидает, что вы будете взаимодействовать с переменной color.Фактический тип объекта, на который указывает объект, может отличаться (например, для кластера классов , например NSString).

6 голосов
/ 11 декабря 2011

Проблема в том, что вы можете обращаться к объектам Objective-C только по ссылке через указатели, например:

UIColor *color;

вы не можете иметь «голый» объект, например:

UIColor color;

Таким образом, решение состоит в том, чтобы вставить звездочку в ваш код (что вы, вероятно, хотели сделать, а ошибка - просто опечатка).

5 голосов
/ 11 декабря 2011

Вам нужно объявить указатель UIColor, например, так и добавить retain / strong в зависимости от того, используете ли вы ARC или MRR:

@property (nonatomic, strong) UIColor *color;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...