ios - 以下代码是什么意思?为什么这里使用 "id"?

标签 ios objective-c

UITableView *tableView = (id)[self.view viewWithTag:1]; //why id is used here?

[tableView registerClass:[BIDNameAndColorCell class] forCellReuseIdentifier:CellTableIdentifier];

这是“开始 iOS 6 开发”一书中的一段代码,第 8 章,第 245 页。

我想知道为什么这里需要“id”?

最佳答案

id 不应该在那里。应该是:

UITableView *tableView = (UITableView *)[self.view viewWithTag:1];

括号中的部分称为“类型转换”。这是必需的,因为 viewWithTag: 方法返回一个 UIView 引用,但您希望将它分配给一个 UITableView 变量。强制转换告诉编译器你知道得更多并且返回的 View 确实是一个 TableView 。如果没有强制转换,编译器将提示分配无效。

在这里也可以使用 id,因为 id 是一个通用类型,可以表示任何对象类型。

关于ios - 以下代码是什么意思?为什么这里使用 "id"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21584159/

相关文章:

ios - 判断 UIView/Image 当前是否可见

ios - 通过 Afnetworking 从 api 获取数据时出现问题

ios:如何使用 StoryBoards 从 ViewController 打开 Tab Bar Controller

objective-c - 它是 Objective-C + Cocoa 中的任何松散耦合机制,如 C# 委托(delegate)或 C++Qt 信号+插槽吗?

带有collectionview subview 的ios uiviewcontroller不显示单元格

ios - 为 iOS 模拟器构建,但链接框架 '****.framework' 是为 iOS 构建的

ios - 当 2 个用户进入 iOS 中的特定区域时连接他们

ios - 无需重新压缩即可从用户图库保存/获取 JPEG

iPhone ASIFormDataRequest 与多部分/表单数据

ios - Objective-C 中的变量声明——接口(interface)与实现