2010-01-17 4 views
3

Ok, j'essaie d'éviter les variables globales, donc je lis des classes singleton. Il s'agit d'une tentative de définition et de lecture d'un tableau mutable, mais le résultat est null.Singleton Class iPhone

//Content.h 

@interface Content : NSObject { 
    NSMutableArray *contentArray; 
} 

+ (Content *) sharedInstance; 

- (NSMutableArray *) getArray; 
- (void) addArray:(NSMutableArray *)mutableArray; 


@end 

.

//Content.m 

@implementation Content 



static Content *_sharedInstance; 

+ (Content *) sharedInstance 
{ 
    if (!_sharedInstance) 
    { 
     _sharedInstance = [[Content alloc] init]; 
    } 

    return _sharedInstance; 
} 

- (NSMutableArray *) getArray{ 
    return contentArray; 

} 

- (void) addArray:(NSMutableArray *)mutableArray{ 

    [contentArray addObject:mutableArray]; 

} 

@end 

Et dans un ViewController j'ajouté #import "Content.h", où je tente d'appeler ceci:

NSMutableArray *mArray = [NSMutableArray arrayWithObjects:@"test",@"foo",@"bar",nil]; 

Content *content = [Content sharedInstance]; 
[content addArray:mArray]; 

NSLog(@"contentArray: %@", [content getArray]); 

Répondre

4

Vous devez d'abord allouer et initer le tableau. Personnellement, je le ferais dans la méthode d'initialisation de la classe de contenu comme ceci:

-(id)init{ 
    if(self = [super init]){ 
     …the rest of your init code… 
     contentArray = [[NSMutableArray alloc] init]; 
    } 

    return self; 
} 
+0

Parfait, merci pour le code – scud

+0

voté en, a été utile. Merci! – Alex

3

Vous ne fait alloc/le tableau contentArray initialiser.

+1

Vous êtes tout à fait raison, je vous remercie – scud