Jeśli chcesz utworzyć tablicę liczb całkowitych, czy możesz użyć NSInteger? Czy musisz używać numeru NSNumber? Jeśli tak, to dlaczego?
ios
objective-c
neuromancer
źródło
źródło
Odpowiedzi:
Możesz użyć zwykłej starej tablicy C:
Lub możesz użyć
NSArray
lubNSMutableArray
, ale tutaj będziesz musiał zawinąć każdą liczbę całkowitą wewnątrzNSNumber
instancji (ponieważNSArray
obiekty są zaprojektowane do przechowywania instancji klas).źródło
NSArray
, jestem pewien, że nie poczujesz uderzenia w wydajność.Tablica C:
Tablica Objective-C:
Swift Array:
To też jest poprawne:
Uwaga: tablice są silnie wpisywane w języku Swift; w takim przypadku kompilator wnioskuje z treści, że tablica jest tablicą liczb całkowitych. Możesz też użyć tej jawnej składni:
Gdybyś chciał mieć tablicę Doubles, użyłbyś:
lub:
źródło
Jeśli chcesz używać NSArray, potrzebujesz klasy Objective-C, aby w nim umieścić - stąd wymóg NSNumber.
To powiedziawszy, Obj-C nadal jest C, więc możesz używać zwykłych tablic C i przechowywać zwykłe liczby int zamiast NSNumbers, jeśli chcesz.
źródło
Możesz użyć CFArray zamiast NSArray . Oto artykuł wyjaśniający, jak to zrobić.
To samo dotyczy wersji CoreFoundation innych kontenerów.
źródło
Stworzyłem proste opakowanie Objective C wokół starej dobrej tablicy C, aby można było z niej wygodniej korzystać: https://gist.github.com/4705733
źródło
Jeśli kolejność liczb całkowitych nie jest wymagana i jeśli istnieją tylko unikalne wartości
możesz także użyć NSIndexSet lub NSMutableIndexSet Będziesz mógł łatwo dodawać i usuwać liczby całkowite lub sprawdzić, czy twoja tablica zawiera liczbę całkowitą z
Sprawdź dokumentację, aby uzyskać więcej informacji.
źródło
NSSet
(i używaniu liczb całkowitych zapakowanych wNSNumber
)?Myślę, że o wiele łatwiej jest używać numerów NS. To wszystko, co musisz zrobić:
źródło
for
lub po prostu innej tablicy dla liczb, a następniearrayWithArray
.