Error: свойство 'myBoolVariableName' с атрибутом 'Сохранить' должно быть типа объекта
У меня есть значение BOOL внутри моего определения @interface в моем файле .h. Вот он внизу. У него такая же проблема: указатель или нет.
@interface myCustomViewController : UIViewController <UIWebViewDelegate> {
{
//...more iboutlets defined above
BOOL *myBoolVariableName;
}
Когда я компилирую, я получаю "error: property" myBoolVariableName "с атрибутом" Сохранить "должен быть типа объекта" в строке для импорта моего файла .h.
Я нашел здесь эту страницу о целочисленном /nsnumber:
http://discussions.apple.com/thread.jspa?threadID=1846927
Итак, кажется, что я не могу использовать значения BOOL внутри определения @interface. Что я могу использовать вместо этого?
Что мне делать для BOOL/boolean значений?
Ответы
Ответ 1
Я предполагаю, что позже в вашем интерфейсе у вас есть что-то вроде этого:
@property (retain) BOOL *myBoolVariableName;
Это означает создание свойства, значение которого является указателем на BOOL и использование семантики сохранения.
Ваша проблема в том, что BOOL * является указателем на байт памяти, а не указателем на объект. И сохранить это то, что применяется только к объектам.
Здесь вы можете создать свойство BOOL.
@interface myCustomViewController : UIViewController <UIWebViewDelegate> {
BOOL myBoolVariableName;
}
@property myBoolVariableName;
@end
Важными отличиями являются то, что переменная объявляется как "BOOL", а не "BOOL *", а свойство не имеет (сохраняет).
Ответ 2
Я столкнулся с подобной ситуацией. Я решил это,
@interface myCustomViewController : UIViewController {
BOOL myBoolVariableName;
}
@property BOOL myBoolVariableName;
@end
Я отсылаю один ответ от Джона Хесса, но у меня есть одна ошибка. Имя типа требует спецификатора или определителя.
Моя предыдущая версия была похожа на
@property myBoolVariableName;
Итак, я добавил BOOL
и решил проблему.