大多数苹果的实现,我可以看到他们使用结构来存储标志位,为什么他们这样做?为什么我们不能使用 BOOL 来处理这个呢?
从 tableview 查看下面的 Apple 示例代码,
struct {
unsigned int delegateheightForHeaderInSection:1;
unsigned int dataSourceCellForRow:1;
unsigned int delegateHeightForRow:1;
unsigned int style:1;
} _tableFlags;
在内部,他们可能正在使用与此类似的东西,
_tableFlags.delegateheightForHeaderInSection = [delegate respondsToSelector:@selector(tableView:heightForHeaderInSection:)];
到处使用“_tableFlags.delegateheightForHeaderInSection”来检查用户是否实现了这个委托方法。
因此,我们不能像下面这样实现,而不是让结构来存储标志。
BOOL delegateheightForHeaderInSection;
像这样使用它,
delegateheightForHeaderInSection = [delegate respondsToSelector:@selector(tableView:heightForHeaderInSection:)];
这两种方法有什么区别?