Подтвердить что ты не робот

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

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

@property (nonatomic) UIColor color;

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

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

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

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

EDIT:

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

UIColor *color;

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

UIColor color;

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

Ответ 3

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

@property (nonatomic, strong) UIColor *color;