2010-01-23 4 views
2

J'obtiens une erreur du compilateur en essayant de synthétiser un tableau de bool comme ceci:iPhone SDK synthétisant BOOL Tableau

// .h 

#import <UIKit/UIKit.h> 


@interface SomeViewController : UIViewController { 

    BOOL boolArray[100]; 
} 

@property (nonatomic) BOOL boolArray; 

@end 


//m 

#import "SomeViewController" 


@implementation SomeViewController 

@synthesize boolArray; 

@end 

J'ai probablement fait une erreur fondamentale, mais je peux le trouver en ce moment, la synthèse avec boolArray [100 ] n'a pas fonctionné non plus.

Répondre

0

Vous avez probablement besoin du type complet, c'est-à-dire @property (nonatomic) BOOL boolArray [100]; Le [100] est une information de type significatif, pas seulement une indication de la quantité d'espace à allouer.

En outre, je pense que la propriété sera traitée comme const BOOL * qui ne peut pas être affectée, il devrait donc probablement être readonly. La bonne chose à faire est probablement de rendre ceci en lecture seule, ce qui signifie que thins ira chercher le pointeur du tableau puis l'insérera pour assigner aux membres du tableau.

Alternativement, vous pouvez utiliser un NSArray pour cela, mais cela nécessitera que vous utilisiez NSNumber s avec boolVaules qui est plus d'un biotch à traiter.

MISE À JOUR

En fait, le compilateur stupide n'aime pas le [] pour une raison quelconque. Essayez ceci:

@interface TestClass : NSObject { 

    const BOOL *boolArray; 
} 

@property (nonatomic, readonly) const BOOL *boolArray; 

@end 


@implementation TestClass; 

- (const BOOL *)boolArray { 
    if (!boolArray) 
     boolArray = malloc(sizeof(BOOL) * 100); 
    return boolArray; 
} 

- (void)dealloc { 
    [super dealloc]; 
    free((void *)boolArray); 
} 

@end 

une mise à jour

Cette compile:

@interface TestClass : NSObject { 

    BOOL boolArray[100]; 
} 

@property (nonatomic, readonly) const BOOL *boolArray; 

@end 


@implementation TestClass; 

- (const BOOL *)boolArray { 
    return boolArray; 
} 

@end 

C'est une question bizarre. Je souhaite que le compilateur explique exactement à quoi il est mécontent comme "Ne peut pas déclarer la propriété avec le type de tableau" ou quelque chose.

ENCORE UN AUTRE JOUR

Voir cette question: Create an array of integers property in Objective C

Apparemment, selon la spécification C, un tableau est pas un type et les spécifications Objective-C "Plain Old Data" seulement vous permet de déclarer propriétés pour les types de POD. Soi-disant c'est le definiition de PODs:

http://www.fnal.gov/docs/working-groups/fpcltf/Pkg/ISOcxx/doc/POD.html

Mais la lecture qu'il semble comme un tableau de PODs est un POD. Donc je ne comprends pas.

+0

Ensuite, je reçois une erreur de compilateur "Bad property declaration" – scud

+0

C'est une erreur de compilateur pretty sucky .... Ok, voir mise à jour. – Nimrod

+0

Très bien, je vais basculer et juste utiliser un NSArray - merci pour le conseil – scud