4

我正在阅读“Objective C 编程”一书,他对id类型的解释不多,也没有做太多练习,所以我想知道你多久使用id一次,程序员是否大部分时间都避免使用它? (因为他解释了一些问题)

我确定它已被使用,如果您能提及某些情况,那就太好了,它是唯一的解决方案……就像来自某种应用程序开发的现实生活中的编程案例一样。

4

3 回答 3

4

id是 Objective C 中的通用类型。它可以表示*任何 Objective-C 类型的 a,例如NSString *,NSArray *等。Objective-C 的巧妙之处在于你可以向 发送消息id,如果另一端的对象理解消息,它将像往常一样被处理,而发件人不必知道真实的类型

它通常在定义任何泛型时使用。例如,NSArray是一个ids 的数组;由程序员将特定类型的对象放入容器中(例如NSNumberNSString等)。它在 Objective-C 中的许多其他地方都使用过(例如在IBAction为接口构建器定义 s 时,在定义init方法时等)。

于 2013-02-17T04:18:43.293 回答
2

id有点像一个包罗万象的数据类型。它用于保存任何类型的值。

常见用途是用于init...方法的返回类型。集合类使用它,因为它们可以容纳任何对象。请参阅各种 getter 方法返回值以及在可变版本的集合类中添加/设置对象的各种方法。

当您需要对可以是任何类但必须遵守协议的对象的引用时,它也可以与协议结合使用。示例包括许多委托属性,例如UITableView delegate.

于 2013-02-17T04:19:21.383 回答
2

id 是 Objective-C 中的通用对象类型。它可以容纳任何物体。

一个现实世界的例子:解析你不知道的 json,如果根元素是数组或字典。但 id 会带他们两个。

我经常使用它,但经常与协议定义结合使用:id<NetworkPrinterProtocol>. 这意味着它应该是任何类型的对象,但它确实满足 NetworkPrinterProtocol。通常用于定义委托。

请参阅WP:Objective-C — 动态类型

于 2013-02-17T04:19:35.840 回答