2012-06-11 21 views
5

UITableView.h'de, UITableView için arabirim bildiriminde bir ivar struct _tableFlags var. Yapının üyeleri tümüyle imzasız int olarak tanımlanır, ancak her üyenin başlığını bir kolon ve ardından bir sayı takip eder.UITableView.h dosyasındaki _tableFlags ivar yapısının sözdizimi ne anlama geliyor?

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

...

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

Kakao kendi başlık dosyalarında bu sözdizimi ortak faydalanmak eğilimindedir, ama hiç ne anlama geldiğini ipucu ve ne onun işlevidir ettik. Kolon ve üye unvanını takip eden sayı ne anlama geliyor?

+3

, bitfields genellikle temsilci üzerinde respondsToSelector dönüş değerleri önbelleğe için kullanılır. buraya bakın: http://macdevelopertips.com/c/bitfields-in-c.html ve burada: http://stackoverflow.com/questions/626898/how-do-i-create-delegates-in-objective-c Nerede yazıyorsa, "Her temsil etmek istediğimizde bir temsilci bir seçiciye yanıt verip vermediğini kontrol etmek yerine, temsilciler belirlendiğinde bu bilgiyi önbelleğe alabilirsiniz." – magma

cevap

5

Bunlar bit alanlarıdır. Kolondan sonraki sayı, değişkenin yapıda aldığı bitlerin sayısıdır.

Ayrıca bakınız: how to declare an unsigned int in a C program Cocoa

+2

Ah, bu yüzden en az bellek miktarının yapı tarafından kullanıldığından emin olmak için bit alanları kullanılıyor? BOOL'un, imzalı bir char olarak tanımlandığı ve bu nedenle birden fazla bit genişliğinde kullanıldığı için kullanılmadığını düşünmek doğru olur mu? – friedenberg

+0

@friedenberg Tam olarak :) – mttrb