Po numerem In Cocoa do you prefer NSInteger or just regular int, and why? pojawiła się wzmianka o NSDouble
i NSFloat
, ale nie widzę odniesienia do tych w żadnej dokumentacji. Jeśli celem jest ochrona architektury, to co z innymi typami, takimi jak double
lub float
?Czy istnieją NSDouble, NSFloat lub inne typy niż NSInteger?
Odpowiedz
NSInteger
istnieje, ponieważ typ int
różni się rozmiarem między systemami 32-bitowymi i 64-bitowymi. float
i double
nie różnią się rozmiarem w ten sam sposób, więc nie ma potrzeby tworzenia ich typów.
Co więc zrobić, jeśli chcę dodać podwójne do NSArray? Akceptuje tylko obiekty. –
Zawiń w obiekt NSNumber (który jest podklasą bardziej ogólnej wartości NSV). – duskwuff
Cóż, istnieje 'CGFloat', który jest' typedef' dla 'float' na 32bit i' double' na 64bit. Co jest całkiem równoznaczne z tym, co zostało zrobione z 'NS (U) Integer', powiedziałbym. – Regexident
Nie ma NSFloat
ale wiem API rdzeń graficzny ostatecznie zmieniły się od float
do CGFloat
tak, że może użyć double
na niektórych architekturach.
Najlepiej używać dokładnie tych typów, które deklarują nagłówki API. To powoduje automatyczną zmianę typu, jeśli kiedykolwiek przekompilujesz kod dla innego celu.
Chodzi także o konwencje.
Typedef do int jest niezgodne z int int się.
Przykład: pid_t ma typ int, ale podanie int spowoduje utworzenie ostrzeżenia.
Dlaczego? Ponieważ chcesz mieć pewność, że przekraczając granice API, każdy wie, czego oczekuje kod.
Istnieją typy pływające i podwójne, tzn. NSTimeInterval. Nie chodzi tu o podstawowy typ, ale o konwencję, do której należy się stosować.
Jeśli zadeklarujesz lokalny int jako licznik pętli i nie planujesz przekazać go do dobrze zdefiniowanego API, to dobrze jest wywołać int int.
- 1. Czy istnieją narzędzia do zarządzania jakością inne niż SonarQube
- 2. Czy w C++ istnieją typy większe niż długie długie int?
- 3. Czy optymalizatorzy przenoszą tymczasowe typy inne niż POD z pętli?
- 4. Czy istnieją inne dobre alternatywy dla zc.buildout i/lub virtualenv do instalowania zależności innych niż python?
- 5. Czy istnieją inne nowoczesne platformy sieciowe (Moose/PSGI) inne niż Catalyst?
- 6. Jakie inne alternatywy dla logowania log4net istnieją?
- 7. Czy obiekty funkcji lub typy w JavaScript?
- 8. Przekazywanie zmiennej NSInteger do NSMutableDictionary lub NSMutableArray
- 9. Statystyki repozytorium subversion, inne niż StatSVN?
- 10. iPhone - czy Cocos2d może tworzyć gry inne niż gry?
- 11. Czy Msbuild rozpoznaje jakiekolwiek konfiguracje kompilacji inne niż DEBUG | RELEASE
- 12. Czy można rzucić NSInteger do NSNumber?
- 13. java.io.RandomAccessFile skalowalność (lub inne opcje)
- 14. Czy LuaJIT działa szybciej niż inne dynamiczne języki JIT?
- 15. Czy Umbraco zezwala na subdomeny inne niż umbraco
- 16. Czy NSDictionary initWithObjectsAndKeys uchwyty/null zerowe obiekty i inne niż NSString obiektów
- 17. Czy istnieją wskaźniki czasowe?
- 18. Jak zaimplementować układy inne niż domyślneLayout
- 19. IDE inne niż Eclipse, które obsługują programowanie aplikacji na Androida
- 20. Jak wyśmiać metody inne niż wirtualne?
- 21. Wejście inne niż łacińskie w emacsclient
- 22. Jak przechowywać hasło inne niż zwykły tekst?
- 23. Czy istnieje jakaś różnica między "statyczną konstelacją NSInteger" i "statyczną const NSInteger"?
- 24. Dołącz NSInteger do NSMutableData
- 25. Konwertuj NSInteger na NSIndexpath
- 26. Konwertuj NSInteger na NSUInteger?
- 27. Konwertuj NSString na NSInteger?
- 28. Jak wprowadzać inne niż domyślne menedżery encji?
- 29. Znajdowanie nieużywanych obiektów (wartości inne niż pierwotne)
- 30. Otwórz okno inne niż diff w vimdiff
Nie jestem również pewien, o czym mówi OP. Te nie istnieją. – BoltClock
Więc podwójne i pływające są bezpieczne architektonicznie? Mogę użyć podwójnego, ale kiedy dochodzi do int, muszę użyć NSIntegera, właśnie tak? – sarunw
Nie sądzę, że * NSFloat *, * NSDouble * istnieje. Ale wiem, że CGFloat istnieje (poza kontekstem pytania. Huh?) – EmptyStack