Domanda

Voglio avere una matrice mutevole con primitive in obj-c (selettori). Qual è il metodo consigliato per fare questo? NSArray e questi possono contenere solo gli oggetti.

È stato utile?

Soluzione

Si dovrebbe utilizzare un NSValue per avvolgere il selettore o di qualsiasi altro tipo primitivo è necessario. In cacao SEL è una sorta di puntatore, in modo da poter utilizzare [NSValue valueWithPointer:whatever] per costruire e [value pointerValue] per farlo fuori. O, in generale, è possibile utilizzare [NSValue valueWithBytes:&whatever objCType:@encode(SEL)]; questo funziona per qualsiasi tipo.

Altri suggerimenti

Se si desidera memorizzare un array di oggetti SEL, la cosa più semplice sarebbe quella di convertire i SELs per NSStrings usando la funzione NSStringFromSelector(), conservarli in un NSMutableArray, e poi convertirli di nuovo a SELs quando li si tira fuori con NSSelectorFromString() la funzione.

Oltre a gestire un array di C-stile da soli (che sicuramente non è l'opzione migliore, IMO), l'unica opzione è quella di utilizzare NSArray / NSMutableArray, e memorizzare i numeri utilizzando NSNumber. E 'un po' più fastidioso per ottenere il valore fuori che con il tipo numerico effettivo, ma lo fa gratis si dalla gestione della memoria della matrice da soli.

Dal momento che i tipi primitivi sono generalmente solo numeri (suddivisi in numero intero o in virgola mobile) o puntatori, qual è il problema con l'utilizzo delle classi utilizzate per avvolgere quelli per i vostri scopi? Un NSMutableArray di NSNumbers, per esempio?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top