C'è un modo per creare NSArray bidimensionale senza matrici di nidificazione nel formato primitivo aFloatArray [] [].Oggetto NSArray multidimensionale
Grazie.
C'è un modo per creare NSArray bidimensionale senza matrici di nidificazione nel formato primitivo aFloatArray [] [].Oggetto NSArray multidimensionale
Grazie.
Sfortunatamente no. Per creare un NSArray multidimensionale:
NSArray *multiArray = [NSArray arrayWithObjects:
[NSMutableArray array],
[NSMutableArray array],
[NSMutableArray array],
[NSMutableArray array], nil];
// Add a value
[[multiArray objectAtIndex:1] addObject:@"foo"];
// get the value
NSString *value = [[multiArray objectAtIndex:1] objectAtIndex:0];
Tuttavia, è possibile utilizzare il codice C in Objective-C (dal momento che è un rigoroso superset del C), se si adatta il vostro bisogno si potrebbe dichiarare la matrice come si doveva suggerito.
Se non si utilizza la garbage collection, si perde ogni array all'interno di 'multiArray'. Per risolvere il problema, usa '[NSMutableArray array]'. –
Davvero? Ho capito che [l'array NSMutableArray] ha restituito un NSMutableArray autoreleased, che a sua volta sarebbe stato mantenuto dal NSArray a cui è stato aggiunto! Lo cercherò sicuramente perché se hai ragione ho un sacco di codice da leggere lol – FatalMojo
Sì. Il punto è che l'oggetto autoreleased _è_ mantenuto dall'array a cui è stato aggiunto. Quando viene rilasciato l'array principale, lo stesso vale per il suo contenuto. Se aggiungi '[NSMutableArray new]' a un array, il suo retain-count diventa '2'. Quando viene rilasciato l'array principale, ciascuno dei suoi figli ha ancora un conteggio di conservazione di '1'. –
Si può fare questo:
NSArray *array = @[@[@"0:0", @"0:1"],
@[@"1:0", @"1:1"]];
NSString *value = array[1][0];
Penso che questo sia molto più breve di roba "objectAtIndex".
ma attenzione si deve utilizzare la versione di Apple LLVM Compiler> = 4.0
Questo è sicuramente l'approccio moderno. –
Per inserire un oggetto in Array multidimensionale nella Raccolta o TableView cellForRowAtIndexPath:
NSString *sectionRow = [NSString stringWithFormat:@"%d:%d", indexPath.section, indexPath.row];
[dictionary setValue:[UIImage imageWithData:imageData] forKey:sectionRow];
per recuperare un oggetto dalla matrice multidimensionale in Collection o TableView cellForRowAtIndexPath:
NSString *sectionRow = [NSString stringWithFormat:@"%d:%d", indexPath.section, indexPath.row];
UIImage *cellImage = [dictionary valueForKey:sectionRow];
Che cosa è necessario eseguire? Forse potrebbero esserci altri approcci ancora più adatti al problema che stai risolvendo. – jlehr