Тип интерфейса не может быть статически распределен?
Я попытался поместить это в заголовочный файл моего объекта вида:
@property (nonatomic) UIColor color;
чтобы сохранить цвет, который должны быть нарисованы в этом представлении.
Xcode дает мне ошибку в этой строке:
Тип интерфейса не может быть статически выделен
Что это значит и что мне делать?
EDIT:
Я добавил a *, и в момент синтеза он сказал:
ARC запрещает синтезировать свойство объекта Objective C с неопределенным атрибутом собственности или хранения?
Ответы
Ответ 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;