erro: propriedade 'myBoolVariableName' com 'reter' atributo deve ser do tipo de objeto

votos
12

Eu tenho um valor BOOL dentro da minha definição @ interface no meu arquivo .h. Aqui está a seguir. Ele tem o mesmo problema se é um ponteiro ou não.

@interface myCustomViewController : UIViewController <UIWebViewDelegate> {
{
 //...more iboutlets defined above
 BOOL *myBoolVariableName;
}

Quando eu compilar, eu recebo erro: propriedade 'myBoolVariableName' com 'reter' atributo deve ser do tipo de objeto na linha para a importação de meu arquivo .h.

Eu encontrei esta página aqui sobre um inteiro / NSNumber:

http://discussions.apple.com/thread.jspa?threadID=1846927

Assim, parece que eu não posso usar valores BOOL dentro de uma definição @ interface. O que eu posso usar em vez disso?

O que devo fazer para valores / boolean BOOL?

Publicado 27/08/2009 em 01:21
fonte usuário
Em outras línguas...                            


2 respostas

votos
33

Eu estou supondo que mais tarde em sua interface que você tem algo parecido com isto:

@property (retain) BOOL *myBoolVariableName;

Isso significa fazer uma propriedade que seu valor é um ponteiro para um BOOL, e usar reter semântica.

Seu problema é que BOOL * é um ponteiro para um byte de memória, não um ponteiro para um objeto. E reter é algo que só se aplica a objetos.

Veja como você pode fazer uma propriedade BOOL.

@interface myCustomViewController : UIViewController <UIWebViewDelegate> {
    BOOL myBoolVariableName;
}

@property myBoolVariableName;

@end

As diferenças importantes são que a variável é declarada como "BOOL", não "BOOL *" ea propriedade não tem (manter).

Respondeu 27/08/2009 em 01:30
fonte usuário

votos
1

Tenho enfrentado situação semelhante. Eu resolvi isso como,

@interface myCustomViewController : UIViewController {
BOOL myBoolVariableName;
}
@property BOOL myBoolVariableName;
@end

Refiro-me uma resposta por Jon Hess, mas eu tenho um erro na mesma. nome do tipo requer um especificador ou qualificador. Minha versão anterior era como,

@property myBoolVariableName;

Então eu adicionei BOOLe resolveu o problema.

Respondeu 30/04/2013 em 12:46
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more