Originariamente inviato da Caiodark
Crea una classe SingletonArray con questo header:
e questa implementazione :codice:static NSMutableArray *array; @interface CBSingletonArray : NSObject { } + (NSMutableArray *)getArrayInstance; @end
In ogni file implementazione dove hai bisogno del vettore aggiungi l'import all'header SingletonArray.codice:@implementation CBSingletonArray + (NSMutableArray *)getArrayInstance{ if (array == nil){ array = [[NSMutableArray alloc] init]; } return array; } @end
Per accedere al vettore:
In questo modo sei sicuro di istanziare un solo array e di poterci accedere ovunque ti serva.codice:NSMutableArray *array = [CBSingletonArray getArrayInstance];
Il primo metodo, quello che usava un NSMutableArray globale funziona davvero.
Però ho notato ciò che (il mio idolo) Caiodark mi aveva detto: nel caso della deallocazione dell'array il programma va in palla.
Ho cominciato ad usare il metodo del Singleton, propostomi anche quello dall'utente (che risulta essere il mio idolo) Caiodark.
Il problema è che pur adoperandomi con tutto me stesso se uso il singleton all'interno di un metodo risulta che la dichiarazione locale nasconde le variabili d'istanza.
Riporto: "local declaration of 'array' hides instance variable".
Ho provato anche a dichiararlo nel main, ma rimane comunque nascosto al resto.codice:-(IBAction)addObj: (id)sender{ NSMutableArray *array = [CBSingletonArray getArrayInstance]; OggettoQualsiasi *oggetto = [[OggettoQualsiasi alloc] init]; [array insertObject:oggetto atIndex:0]; }
Devo buttare il computer o è possibile risolvere questa roba?
EDIT:
Sto provando ad anteporre extern davanti al vettore richiamato all'interno del metodo, ma tutto ciò mi sta soltanto facendo innervosire![]()