簡體   English   中英

如何在iPhone應用程序中使用位類型?

[英]How can I use a bit type in my iPhone app?

我正在編寫一個混合了Objective-C和C的iPhone應用程序。我的代碼中都有32位整數標志,這些標志僅采用兩個不同的值:0和1。我想使用較小的數據類型超過32位。

是否只有一種類型? Objective-C中“ BOOL”的大小是多少?

我考慮過的一種解決方案是對一組32個標志使用一個32位整數...然后按以下方式檢查每個標志:

if(ALL_FLAGS & (1 << SPECIFIC_FLAG)){...}

我真的很想只使用“位”類型。

干杯!

目標C下的BOOL類型(實際上是可可定義,OBJC本身不知道BOOL類型)正在使用一個字節。 這與Windows 32 BOOL(相當於int或32位)不同。

對於較小的類型,您可以使用典型的C / C ++方法,例如上面示例中的位移或位結構(在這種情況下,編譯器將進行位移和測試)。

typedef struct {
    unsigned someflag:1;
    unsigned anotherflag:1;
    unsigned yetnoather:1;
} MYFLAGS ;


MYFLAGS allflags;  

allflags.anotherflag= TRUE; 

if (allflags.anotherflag) { /* somecode */ }

還有一個CFBitVector,您可以在其中保存一組值...

這是BOOL類型的定義,您可以用相同的方式定義自己的類型:

typedef signed char     BOOL; 
// BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" 
// even if -funsigned-char is used.
#define OBJC_BOOL_DEFINED


#define YES             (BOOL)1
#define NO              (BOOL)0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM