Se você quiser fazer uma matriz de inteiros, pode usar NSInteger? Você tem que usar NSNumber? Se sim, então por quê?
ios
objective-c
neuromancer
fonte
fonte
Respostas:
Você pode usar uma matriz C simples e antiga:
Ou você pode usar um
NSArray
ouNSMutableArray
, mas aqui você precisará agrupar cada inteiro dentro de umaNSNumber
instância (porque osNSArray
objetos são projetados para conter instâncias de classe).fonte
NSArray
, tenho certeza de que você não sentirá o impacto no desempenho.Matriz C:
Matriz Objective-C:
Array Swift:
Isso também está correto:
NB: os arrays são fortemente tipados em Swift; nesse caso, o compilador infere do conteúdo que a matriz é uma matriz de inteiros. Você também pode usar esta sintaxe de tipo explícito:
Se você quisesse uma variedade de Doubles, você usaria:
ou:
fonte
Se você quiser usar um NSArray, precisará de uma classe Objective-C para colocá-lo - daí o requisito NSNumber.
Dito isso, Obj-C ainda é C, então você pode usar arrays C regulares e manter ints regulares em vez de NSNumbers, se necessário.
fonte
Você pode usar CFArray em vez de NSArray. Aqui está um artigo explicando como.
O mesmo se aplica à versão CoreFoundation dos outros contêineres.
fonte
Criei um wrapper Objective C simples em torno do bom e velho array C para ser usado de maneira mais conveniente: https://gist.github.com/4705733
fonte
Se a ordem dos seus inteiros não for necessária e se houver apenas valores únicos
você também pode usar NSIndexSet ou NSMutableIndexSet Você será capaz de adicionar e remover inteiros facilmente ou verificar se sua matriz contém um inteiro com
Verifique a documentação para mais informações.
fonte
NSSet
(e usar inteiros dentro de umNSNumber
)?Acho que é muito mais fácil usar o NSNumbers. Tudo o que você precisa fazer:
fonte
for
ou apenas outra matriz para os números e, em seguidaarrayWithArray
.