- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
iOS程序员面试分类模拟7
简答题
1.?在UITableViewController中创建UITableViewCell时,initWithSytle:resuseIdentifier中的reuseIden(江南博哥)tifier有什么用?UITableViewCell的复用原理是怎么样的?
正确答案:
reuseIdentifier顺名思义是一个复用标识符,是一个自定义的独一无二的字符串,用来唯一地标记某种重复样式的UITableViewCell。系统是通过reuseIdentifier来复用已经创建了的指定样式的cell,iOS中表格的cell通过复用机制来提高加载效率,因为多数情况下表格中的cell样式都是重复的,只是数据模型不同而已。因此,系统可以在保证创建一定数量的cell的前提下(覆盖整个tableView),通过保存并重复使用已经创建的cell来提高加载效率和优化内存,避免不停地创建和销毁cell元素。
??UITableViewCell的复用原理其实很简单,可以通过下丽一个简单的例子来理解。
??开发时在UITableViewController类中写cell复用代码的基小模板如下:
??/*可复用cell制作*/
??-(UITableViewCell*)tableView:(UITableView*)tableView?cellForRowAtIndexPath:(NSIndexPath*)indexPath{
??/*定义cell重用的静态标志符*/
??staticNSString*cell_id=@cell_id_demo;
??/*优先使用可复用的cell*/
??UITableViewCell*cell=[tableViewdequeueReusableCellWithIdentifier:cell_id];
??/*如果要复用的cell还没有创建,那么创建一个供之后复用*/
??if(cell=nil){
??/*新创建cell并使用cell_id复用符标记*/
??cell=[[UITableViewCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:cell_id];
??}
??/*配置cell数据*/
??cell.textLabe1.text=[NSStringstringWithFormat:@Cell%i,countNumber];
??/*其他cell设置...*/
??returncell;
??}
??代码这样写的原因是通过调用当前tableView的dequeueReusableCellWithIdentifier方法判断指定的reuseIdentifier是否有可以重复使用的cell。如果有,那么会返回可复用的cell,cell就绪之后便可以开始更新cell的数据;如果没有可以复用的cell,那么返回nil,然后会进入后面的if语句,此时创建新的cell并给它标记一个标识符reuseIdentifier。注意上面的if语句并不是每次都创建一次新的cell,然后全部重复利用新创建的那一个cell,这是对cell复用机制的误解。事实是要创建足够数量的可覆盖整个tableView的cell之后才会开始复用之前的cell(UITableView中有一个visiableCells数组保存当前屏幕可见的cell,还有一个reusableTableCells数组用来保存那些可复用的cell)。下面通过测试来验证。
??如何简洁清楚地展示UITableViewCelI的复用机制呢?下面的例子是创建最基本的文本cell,并创建一个cell创建计数器,每次新创建cell计数器加1然后显示在cell上,如果是复用的cell,那么会显示是复用的哪一个cell,测试代码如下:
??/*分区个数设置为1*/
??-(NSInteger)numberOfSectionsInTableView:(UITableView*)tableView{
??return1;
??}
??/*创建20个cell,保证覆盖并超出整个tableView*/
??-(NSInteger)tableView:(UITableView*)tableViewnumberOfRowsInSection:(NSInteger)section{
??return20;
??}
??/*cell复用机制测试*/
??-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:
文档评论(0)