Non sono riuscito a trovare un esempio funzionante del metodo [NSDictionary getObjects:andKeys:]
. L'unico example che ho trovato, non si compila. Ho fornito gli errori/avvisi qui nel caso qualcuno li stia cercando.Esempio di [NSDictionary getObjects: andKeys:]
Il motivo per cui ero confuso è perché la maggior parte dei metodi su NSDictionary restituisce un NSArray
. Tuttavia, nello documentation indica che le variabili out di questo metodo vengono restituite come array C.
Qui ci sono i messaggi di errore/avvertenze si potrebbe ottenere se si segue l'esempio collegato:
NSDictionary *myDictionary = ...;
id objects[]; // Error: Array size missing in 'objects'
id keys[]; // Error: Array size missing in 'keys'
[myDictionary getObjects:&objects andKeys:&keys];
for (int i = 0; i < count; i++) {
id obj = objects[i];
id key = keys[i];
}
.
NSDictionary *myDictionary = ...;
NSInteger count = [myDictionary count];
id objects[count];
id keys[count];
[myDictionary getObjects:&objects andKeys:&keys]; // Warning: Passing argument 1 of 'getObjects:andKeys:' from incompatible pointer type.
for (int i = 0; i < count; i++) {
id obj = objects[i];
id key = keys[i];
}
Fornirò una soluzione di lavoro come risposta a questa domanda.
cosa devo rilasciare obj e chiave? – Cesar
Non rilasciare nulla nell'esempio di codice sopra riportato. –
Nel caso in cui qualcuno si chiedesse perché non è necessario rilasciare nulla (questa è stata una cosa che mi ha ucciso all'inizio dello sviluppo) è perché nulla è stato assegnato. Nessuna memoria allocata = nessuna memoria necessaria per essere rilasciata. Ovvio ma se avessi visto questo qualche mese fa non avrei idea del motivo per cui non useresti il rilascio :) – Elmo