iOS中的dequeueReusableCellWithIdentifier方法

Swift语言中的UITableView这个类中有一个方法叫做dequeueReusableCellWithIdentifier,我看文档中对其的描述是Returns a reusable table-view cell object located by its identifier,但是其定义函数是:func dequeueReusableCellWithIdentifier(identifier: String) -> AnyObject?,说明其返回的是一个AnyObject的optional值

let cell = self.tableView.dequeueReusableCellWithIdentifier("todoCell") as! UITableViewCell

这行代码我如果没理解错的话,是调用了父类中的一个tableView的self.tableView.dequeueReusableCellWithIdentifier方法,返回了一个AnyObject可选值,然后将其向下转型至UITableViewCell,从而让cell这个常量的类型是UITableViewCell而不是一个AnyObject?

请问我的理解正确吗?然后如果这个函数返回的始终是AnyObject?型的话,是不是每次使用的时候都需要向下转型?

另外关于利用as向下转型,是不是其就是把一个变量的类型进行转化?

阅读 4.1k
1 个回答

本来就是以前的编译器
所以很多东西其实还是Objc的
返回是AnyObject也就是任何实例都行 无论什么类型
只要你运行时能跑通 编译时才不管
其实并不能说类型转换 只能说 手工指定类型

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题