2012-06-11 10 views
5

W UITableView.h, w deklaracji interfejsu dla UITableView znajduje się ivar struct _tableFlags. Członkowie struktury są zdefiniowani jako unsigned int, jednak po tytule każdego członka następuje dwukropek, a następnie liczba.Co oznacza składnia struktury ivar _tableFlags w UITableView.h?

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

...

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

Kakao dąży do wspólnego korzystania z tej składni w plikach nagłówka, ale nie mam pojęcia, co to znaczy i co jest jego funkcja. Co oznacza dwukropek i numer następujący po tytule członka?

+3

w kakao, bitfields są często wykorzystywane do buforowania wartości zwracanych respondsToSelector na delegata. zobacz tutaj: http://macdevelopertips.com/c/bitfields-in-c.html i tutaj: http://stackoverflow.com/questions/626898/how-do-i-create-delegates-in-objective-c gdzie mówi: "Zamiast sprawdzać, czy delegat odpowiada selektorowi za każdym razem, gdy chcemy go wysłać, możesz buforować te informacje, gdy ustawi się delegatów." – magma

Odpowiedz

5

Są to pola bitowe. Liczba po dwukropku to liczba bitów, które zmienna przyjmuje w strukturze.

Zobacz także: how to declare an unsigned int in a C program

+2

Ah, więc pola bitowe są używane w celu upewnienia się, że najmniejsza ilość pamięci jest używana przez strukturę? Czy słuszne byłoby założenie, że BOOL nie był używany, ponieważ jest zdefiniowany jako znakowany znak, a zatem więcej niż jeden bit szerokości? – friedenberg

+0

@friedenberg Dokładnie :) – mttrb