ios nsmutablearray initialization xcode5 xcode5.0.1

ios - cómo y dónde inicializo un NSMutableArray global en Xcode 5



initialization xcode5 (4)

Crear una clase Singleton es la mejor opción para usted. En esta clase singleton, puede inicializar la matriz. Más tarde, puede acceder a esta matriz desde cualquier clase utilizando esta clase singleton. Un gran beneficio es que no necesita inicializar el objeto de clase cada vez. Puede acceder a la matriz utilizando un objeto compartido .

A continuación se muestra un tutorial para Singletons en el objetivo C

http://www.galloway.me.uk/tutorials/singleton-classes/

Intento inicializar un NSMutableArray global que pueda agregar enteros para más adelante. Solo necesito saber cómo y dónde debo inicializar mi matriz para que se pueda acceder y modificar mediante cualquier función que use más adelante en mi programa. También estoy usando Xcode 5 y sé que la matriz debe tener 180 de longitud.


En su archivo AppDelegate.h -

@property(nonatomic,retain) NSMutableArray *sharedArray;

En AppDelegate.m

@synthesize sharedArray;

En didFinishLaunchingWithOptions -

sharedArray = [[NSMutableArray alloc]init];

Ahora,

hacer crear un objeto compartido de AppDelegate como-

mainDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];

y acceda a sharedArray donde quiera acceder usando-

mainDelegate.sharedArray


Puede inicializar su matriz en el método de la application:didFinishLaunchingWithOptions: del delegado de application:didFinishLaunchingWithOptions: ya que se llama mucho más o menos inmediatamente después de que se inicia su aplicación:

// In a global header somewhere static NSMutableArray *GlobalArray = nil; // In MyAppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { GlobalArray = [NSMutableArray arrayWithCapacity:180]; ... }

Alternativamente , puede usar instancias perezosas :

// In a global header somewhere NSMutableArray * MyGlobalArray (void); // In an implementation file somewhere NSMutableArray * MyGlobalArray (void) { static NSMutableArray *array = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ array = [NSMutableArray arrayWithCapacity:180]; }); return array; }

A continuación, puede acceder a la instancia global de la matriz utilizando MyGlobalArray() .

Sin embargo, esto no se considera una buena práctica de diseño en la programación orientada a objetos . Piense en para qué sirve su matriz y, posiblemente, guárdela en un objeto único que gestione la funcionalidad relacionada, en lugar de almacenarla globalmente.


Puede crear una clase singleton y definir una propiedad para su matriz en esa clase.

por ejemplo:

// .h file @interface SingletonClass : NSObject @property (nonatomic,retain) NSMutableArray *yourArray; +(SingletonClass*) sharedInstance; @end // .m file @implementation SingletonClass +(SingletonClass*) sharedInstance{ static SingletonClass* _shared = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _shared = [[self alloc] init]; _shared.yourArray = [[NSMutableArray alloc] init]; }); return _shared; } @end