36
A
回答
29
在這種情況下,您可能右鍵單擊並轉到定義:
#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif
+0
ok thanx i得到它 – Hitarth
+0
容易和正確 –
20
的區別是抽象類型及其同夥從硬件大小。現在我們不必擔心整數是多少,或者指針在特定硬件上有多大。
「C」在這方面不好,只能說明一個long至少和int一樣大,int是硬件的「自然」整數大小(不管是什麼意思),int是至少只要短 - 一個(大混亂)。
這似乎是來自Fortran的一個好主意,但並沒有很好的老化。
可以使用POSIX定義的東西,比如uint32_t,int16_t等。但是這並不能解決指針在任何特定硬件上需要多大。
因此,如果Apple將返回類型定義爲NSUInteger,那麼您只需使用該類型,並且不需要知道它是否爲特定硬件的大小爲16,32或64位。 (我只是爲了舉例而選擇了這些數值)。
正如你在@Bastian中看到的那樣,實際尺寸取決於硬件。
該文檔回答「問題的信」,但沒有提供「爲什麼」的理解?
相關問題
- 1. int或NSInteger爲NSUInteger索引
- 2. CLI和GUI之間的NSInteger區別?
- 3. NSUInteger myID和int myID有什麼區別?
- 4. NSNotFound,NSInteger,NSUInteger和NSRange.location
- 5. int * x []和int(* x)[]之間的區別?
- 6. int和NSInteger有什麼區別?
- 7. C#中char和int之間的區別#
- 8. uint和unsigned int之間的區別?
- 9. Python 3.5 - '//'和'int()'之間的區別
- 10. int和Integer之間的區別
- 11. Int和Uint8之間的區別swift
- 12. void main和int之間的區別主
- 13. defaultdict(lambda:None)和defaultdict(int)之間的區別
- 14. int p = *(int *)i和int p = *(int *)&i之間的區別
- 15. (int)和intval()之間有什麼區別?
- 16. int someInts [3]和int * someInts = new int [3]之間的區別?
- 17. 新的int和new(int)之間的C++有什麼區別?
- 18. '(int)a','a as int'和C#中的Convert.ToInt32(a)之間的區別
- 19. foo(int * arr)和foo(int arr [])之間的任何區別?
- 20. int * p和int * p聲明之間的區別
- 21. 傳遞(int x)和(const int x)之間的區別
- 22. static_cast <int>(var)和*(int *)&var之間的區別是什麼?
- 23. int fpurge()和int fflush()之間的區別C
- 24. int和signed int聲明之間的區別
- 25. int main()和int main(void)之間的區別?
- 26. (int *)arr [2]和int * arr [2]之間的區別是什麼?
- 27. const int&x = 4和const int x = 4之間的區別
- 28. 「Convert.ToString(Nullable <int>)」和「Nullable <int> .ToString()」之間的區別?
- 29. 最終靜態int和靜態最終int之間的區別?
- 30. int *和int []之間的實際區別是什麼?
沒有'NSInt'這樣的東西。 – BoltClock
NSInteger非NSInt .. – Hitarth
[請參閱文檔](http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_DataTypes/Reference/reference.html) – Jiri