【问题标题】:Instance Variables and Bitfield实例变量和位域
【发布时间】:2012-12-12 15:08:37
【问题描述】:

我试图在 Objective-C 中创建一个 1 位的实例字段,但是当我尝试这个 @property BYTE Z : 1; 时,我收到一条错误消息 Property name cannot be a bitfield

我不能这样做吗?是否有解决此错误的方法?

谢谢

【问题讨论】:

    标签: objective-c instance bit bit-fields ivar


    【解决方案1】:

    大多数机器的最小可分配内存单元是 1 字节。没有办法分配 1 位,它可能不可映射。它必须包含所有 ASCII 字符。
    所以只需使用一个字节然后读取位掩码。

    使用类似的东西:

    @property (nonatomic) Byte byte;
    

    然后使用宏进行读取:

    #define BitAtIndex(byte,index) (byte & (1<<index))!=0
    

    PS:当然索引不能大于7。

    【讨论】:

    • 我在检查 Objective-C 中有哪些可用的数据类型,但我为什么不对 1 位整数使用 BOOL,这是个好主意吗?
    • 是的,你可以使用它。A BOOL 也通常使用 1 字节的内存,但我认为你不需要节省这么多内存。你也可以避免读取位掩码。那除非你有很多 BOOL 并且害怕内存不足。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 2013-08-16
    • 2012-01-31
    • 1970-01-01
    相关资源
    最近更新 更多