2010-11-10 6 views
0

Cher tous. Je dois conserver des informations temporaires dans le code. Quand j'y accède, je fais une copie instantanée de ma classe, je reçois le résultat sous MutableArray, mais je dois utiliser ce tableau dans d'autres méthodes de code. Je n'aime pas faire une copie instantanée de ma classe à nouveau, bcs cela prend de la mémoire et du temps processeur, mais je dois utiliser le reste du tableau dans d'autres méthodes. Actuellement je le garde dans le contrôleur de tableau, mais j'aime trouver un autre meilleur moyen. Pour certaines raisons, je n'aime pas envoyer le pointeur vers ce MutableArray comme paramètre de la méthode. ProjectArrays.h:meilleure façon de garder les tableaux dans le code

#import <Cocoa/Cocoa.h> 
@interface ProjectArrays : NSObject { 
NSMutableArray *myMutableArray;  
} 
@property (nonatomic, retain) NSMutableArray *myMutableArray; 
+(ProjectArrays *)sharedProjectArrays; 

@end 

ProjectArrays.m:

#import "ProjectArrays.h" 
#import "SynthesizeSingleton.h" 

@implementation ProjectArrays 

SYNTHESIZE_SINGLETON_FOR_CLASS(ProjectArrays) 

@synthesize myMutableArray; 

- (void)dealloc { 
// Clean-up code here. 
[myMutableArray release]; 
[super dealloc]; 
} 

@end 

AppDelegate.m:

[[ProjectArrays sharedProjectArrays].myMutableArray addObject:@"Test"]; 

NSLog (@"This is test first point:%@",[[ProjectArrays sharedProjectArrays].myMutableArray objectAtIndex:0]); 

2010-11-21 19: 26: 18,636 neige [14523: a0f] Ceci est le premier point de test: (null)

ressemble au code ne peut pas prendre soin des objets.

Répondre

1

Essayez d'utiliser un motif singleton. Créer une classe singleton et y garder des variables environnementales.

Voici le fichier d'en-tête utile: http://snipplr.com/view/32737/synthesizesingleton-definition-header/

Il vous aidera à créer singletons rapidement.

ÉDITÉ:

Voici un singleton que vous souhaitez utiliser

//YourSingletonClassName.h 
#import <Foundation/Foundation.h> 


@interface YourSingletonClassName : NSObject { 
    NSMutableArray *myMutableArray; 
} 

@property (nonatomic, retain) NSMutableArray *myMutableArray; 

+ (YourSingletonClassName *)sharedYourSingletonClassName; 

@end 


//YourSingletonClassName.m 
#import "YourSingletonClassName.h" 
#import "SynthesizeSingleton.h" 

@implementation YourSingletonClassName 

SYNTHESIZE_SINGLETON_FOR_CLASS(YourSingletonClassName) 

@synthesize myMutableArray; 

- (id) init 
{ 
    self = [super init]; 
    if (self != nil) { 
    self.myMutableArray = [NSMutableArray new]; 
    } 
    return self; 
} 


- (void) dealloc { 
    [myMutableArray release]; 
    [super dealloc]; 
} 

@end 

Vous pouvez appeler YourSingletonClassName partout par [YourSingletonClassName sharedYourSingletonClassName];, vous ne devriez pas alloc/init il, par exemple:

[[YourSingletonClassName sharedYourSingletonClassName].myMutableArray addObject:@"some_object_to_add"]; 

S'il vous plaît google pour le modèle singleton et creuser à travers des conceptions obj c.

+0

Pouvez-vous expliquer un peu plus pour cela? Je suis novice en objectif-c. – Alex

+0

Vous devez créer une classe singleton qui contient une propriété 'NSMutableArray * myMutableArray'. Pour créer une telle classe, vous devez inclure un fichier d'en-tête à partir du lien que j'ai fourni, puis appeler 'SYNTHESIZE_SINGLETON_FOR_CLASS (YourSingletonClassName);' dans sa section '@ implementation', puis appeler [[YourSingletonClassName sharedYourSingletonClassName] .myMutableArray' dans n'importe quel endroit de votre projet (n'oubliez pas d'inclure 'YourSingletonClassName.h' dès que vous voulez utiliser votre singleton). Est-ce un peu plus clair maintenant? – knuku

+0

où je peux déclarer myMutableArray dans ce fichier d'en-tête? – Alex

Questions connexes