UITableView.h中ivar结构_tableFlags的语法是什么意思?

fri*_*erg 5 syntax cocoa-touch struct uitableview ios

在UITableView.h中,在UITableView的接口声明中,有一个ivar struct _tableFlags.struct的成员都被定义为unsigned int,但每个成员的标题后面跟一个冒号,然后是一个数字.

struct {
    unsigned int dataSourceNumberOfRowsInSection:1;
    unsigned int dataSourceCellForRow:1;
Run Code Online (Sandbox Code Playgroud)

...

    unsigned int longPressAutoscrollingActive:1;
    unsigned int adjustsRowHeightsForSectionLocation:1;
    unsigned int customSectionContentInsetSet:1;
} _tableFlags;
Run Code Online (Sandbox Code Playgroud)

Cocoa倾向于在其头文件中共同使用这种语法,但我不知道它的含义和功能是什么.冒号和成员名称后面的数字是什么意思?

mtt*_*trb 5

这些是位字段.冒号后面的数字是变量在结构中占用的位数.

另请参见:如何在C程序中声明unsigned int

  • 啊,所以使用位字段是为了确保结构使用最少量的内存?假设BOOL没有被使用是正确的,因为它被定义为一个有符号的char,因此超过一位宽? (2认同)