Pergunta

Eu quero ter uma matriz mutável com primitivas no OBJ-C (seletores). Qual é a maneira recomendada de fazer isso? NSArray e esses podem apenas segurar objetos.

Foi útil?

Solução

Você deve usar um NSValue Para embrulhar o seletor ou qualquer outro tipo primitivo que você precise. No cacau sel é algum tipo de ponteiro, então você pode usar [NSValue valueWithPointer:whatever] para construí -lo e [value pointerValue] Para divulgá -lo. Ou, em geral, você pode usar [NSValue valueWithBytes:&whatever objCType:@encode(SEL)]; Isso funciona para qualquer tipo.

Outras dicas

Se você quiser armazenar uma variedade de SEL objetos, a coisa mais fácil seria converter o SELs para NSStrings usando o NSStringFromSelector() função, armazene -os em um NSMutableArray, e depois convertê -los de volta para SELs Quando você os puxa usando NSSelectorFromString() função.

Além de gerenciar uma matriz de estilo C (que definitivamente não é a melhor opção, IMO), sua única opção é usar NSArray/NSMutableArray, e armazenar os números usando NSNumber. É um pouco mais irritante divulgar o valor do que com o tipo numérico real, mas ele libera você de gerenciar a memória da matriz.

Como os tipos primitivos geralmente são apenas números (sejam eles inteiros ou pontos flutuantes) ou ponteiros, qual é o problema de usar as classes usadas para embrulhá-las para seus propósitos? Um NSMutableArray do NSNumbers, por exemplo?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top