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

Estoy intentando inicializar un NSMutableArray global que puedo agregar integers a más adelante. Solo necesito saber cómo y dónde debo inicializar mi matriz para poder acceder a ella y cambiarla mediante cualquier function que use más tarde en mi progtwig. También estoy usando Xcode 5 y sé que la matriz debe tener 180 longitudes.

En su file AppDelegate.h –

@property(nonatomic,retain) NSMutableArray *shanetworkingArray; 

En AppDelegate.m

 @synthesize shanetworkingArray; 

En didFinishLaunchingWithOptions –

 shanetworkingArray = [[NSMutableArray alloc]init]; 

Ahora,

cree crear un object compartido de AppDelegate like-

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

y accede a shanetworkingArray a donde deseas acceder usando-

 mainDelegate.shanetworkingArray 

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

por ejemplo:

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

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

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

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

Puede inicializar su matriz en la aplicación del delegado de la application:didFinishLaunchingWithOptions: método, ya que se llama casi inmediatamente después de que se lanza la 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 la creación de 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 mediante MyGlobalArray() .

Sin embargo, esto no se considera una buena práctica de layout en la progtwigción orientada a objects . Piense en para qué sirve su matriz y, posiblemente, guárdela en un object único que administre la funcionalidad relacionada, en lugar de almacenarla de forma global.