2012-06-11 6 views
5

UITableView.hには、UITableViewのインターフェイス宣言に_tableFlagsというivar構造体があります。構造体のメンバはすべてunsigned intとして定義されていますが、各メンバのタイトルの後にコロンと数字が続きます。UITableView.hのivar構造体_tableFlagsの構文は何を意味していますか?

struct { 
    unsigned int dataSourceNumberOfRowsInSection:1; 
    unsigned int dataSourceCellForRow:1; 

...

unsigned int longPressAutoscrollingActive:1; 
    unsigned int adjustsRowHeightsForSectionLocation:1; 
    unsigned int customSectionContentInsetSet:1; 
} _tableFlags; 

ココアは、そのヘッダファイルでこの構文の一般的な使用をする傾向があるが、私はそれが意味し、どのようなその機能が何であるか見当もつかないをしたん。メンバータイトルに続くコロンと数字は何を意味しますか?

+3

ココアでは、ビットフィールドは、多くの場合、デリゲートにrespondsToSelectorの戻り値をキャッシュするために使用されています。ここをクリックしてください:http://macdevelopertips.com/c/bitfields-in-c.htmlそしてここに:http://stackoverflow.com/questions/626898/how-do-i-create-delegates-in-objective-c 「デリゲートがセレクタに応答するたびにデリゲートが応答するかどうかをチェックする代わりに、デリゲートが設定されているときにその情報をキャッシュすることができます」と述べています。 – magma

答えて

5

これらはビットフィールドです。コロンの後の数字は、変数が構造内で取るビット数です。

も参照してください:how to declare an unsigned int in a C program

+2

ああ、ビットフィールドは構造体によって使用されるメモリの量を最小限に抑えるために使われますか? BOOLがsigned charとして定義されているため、BOOLが使用されていないと仮定するのは正しいでしょうか? – friedenberg

+0

@friedenbergまさに:) – mttrb

関連する問題