Массив примитивов c
Я хочу иметь изменяемый массив с примитивами в obj-c (селекторы). Какой рекомендуемый способ сделать это? NSArray
и те могут только держать объекты.
4 ответа
Вы должны использовать NSValue
обернуть селектор или любой другой примитивный тип, который вам нужен. В Какао SEL есть своего рода указатель, поэтому вы можете использовать [NSValue valueWithPointer:whatever]
построить его и [value pointerValue]
чтобы получить это. Или, в общем, вы можете использовать [NSValue valueWithBytes:&whatever objCType:@encode(SEL)]
; это работает для любого типа.
Если вы хотите сохранить массив SEL
объекты, самая простая вещь будет преобразовать SEL
с NSString
с помощью NSStringFromSelector()
функция, хранить их в NSMutableArray
, а затем преобразовать их обратно в SEL
S, когда вы вытаскиваете их с помощью NSSelectorFromString()
функция.
Кроме управления массивом в стиле C самостоятельно (что, безусловно, не самый лучший вариант, IMO), единственным вариантом является использование NSArray
/NSMutableArray
и сохраните числа, используя NSNumber
, Немного раздражает получить значение, чем с фактическим числовым типом, но это освобождает вас от самостоятельного управления памятью массива.
Поскольку примитивные типы, как правило, представляют собой просто числа (будь то целые числа или числа с плавающей запятой) или указатели, в чем проблема использования классов, используемых для их обобщения в ваших целях? NSMutableArray
из NSNumbers
, например?