繁体   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