2012-06-11 34 views
5

Trong UITableView.h, trong khai báo giao diện cho UITableView, có một cấu trúc ivar _tableFlags. Các thành viên của struct đều được định nghĩa là int không dấu, tuy nhiên tiêu đề của mỗi thành viên được theo sau bởi dấu hai chấm và sau đó là một số.Cú pháp của cấu trúc ivar _tableFlags trong UITableView.h có nghĩa là gì?

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

...

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

Cocoa xu hướng làm cho sử dụng chung của cú pháp này trong các tập tin tiêu đề của nó, nhưng tôi đã không có đầu mối ý nghĩa của nó và những gì chức năng của nó là. Dấu hai chấm và số sau tiêu đề thành viên là gì?

+3

trong Cocoa, bitfields thường được sử dụng để cache giá trị trả lại respondsToSelector trên một đại biểu. xem tại đây: http://macdevelopertips.com/c/bitfields-in-c.html và tại đây: http://stackoverflow.com/questions/626898/how-do-i-create-delegates-in-objective-c nơi nó nói "Thay vì kiểm tra xem một đại biểu có đáp ứng với bộ chọn mỗi lần chúng tôi muốn gửi tin nhắn không, bạn có thể lưu trữ thông tin đó khi các đại biểu được đặt". – magma

Trả lời

5

Đây là các trường bit. Số sau dấu hai chấm là số bit biến có trong cấu trúc.

Xem thêm: how to declare an unsigned int in a C program

+2

Ah, vì vậy các trường bit được sử dụng để chắc chắn rằng số lượng bộ nhớ ít nhất được sử dụng bởi cấu trúc? Nó sẽ được chính xác để giả định rằng BOOL đã không được sử dụng bởi vì nó được định nghĩa là một char ký kết và do đó nhiều hơn một chút rộng? – friedenberg

+0

@friedenberg Chính xác :) – mttrb

Các vấn đề liên quan