C-objectif matrices primitives
-
20-09-2019 - |
Question
Je veux avoir un tableau mutable avec primitives dans obj-c (sélecteurs). Quelle est la méthode recommandée pour le faire? NSArray
et ceux qui ne peuvent tenir des objets.
La solution
Vous devez utiliser un NSValue
pour envelopper le sélecteur ou tout autre type primitif dont vous avez besoin. Cocoa SEL est une sorte de pointeur, vous pouvez donc utiliser [NSValue valueWithPointer:whatever]
pour construire et [value pointerValue]
pour le sortir. Ou, en général, vous pouvez utiliser [NSValue valueWithBytes:&whatever objCType:@encode(SEL)]
; cela fonctionne pour tout type.
Autres conseils
Si vous souhaitez enregistrer un tableau d'objets de SEL
, la chose la plus facile serait de convertir les SEL
s à NSString
s en utilisant la fonction NSStringFromSelector()
, les stocker dans un NSMutableArray
, puis les reconvertir en SEL
s lorsque vous les tirez à l'aide NSSelectorFromString()
fonction.
Autre que la gestion d'un tableau vous-style C (ce qui est certainement pas la meilleure option, l'OMI), votre seule option est d'utiliser NSArray
/ NSMutableArray
et stocker les numéros à l'aide NSNumber
. Il est un peu plus ennuyeux pour obtenir la valeur que sur le type numérique réelle, mais il ne vous libérer de la gestion de vous-même la mémoire du tableau.
Puisque les types primitifs sont en général que des chiffres (qu'ils soient entier ou à virgule flottante) ou des pointeurs, quel est le problème avec l'aide des classes utilisées pour envelopper les pour vos besoins? Un NSMutableArray
de NSNumbers
, par exemple?