我正在阅读“在目标C中编程”一书,他对id
类型的解释并不多,并没有对它进行过多的练习,所以我想知道你多久使用{ {1}}如果程序员大部分时间都避免它? (因为他解释了一些问题)
我确信它已被使用,如果您能提及某些情况下它是唯一的解决方案会很棒。就像来自某种应用程序开发的真实编程案例一样。
答案 0 :(得分:4)
id
是Objective C中的通用类型。它可以表示任何Objective-C类型的*
,例如NSString *
,NSArray *
等。关于Objective-C的事情是你可以向id
发送消息,如果另一端的对象理解了消息,它将照常处理而不需要发送者必须知道真实的类型
在定义任何泛型时通常使用它。例如,NSArray
是id
s的数组;程序员可以在容器中放置特定类型的对象(例如NSNumber
,NSString
等)。它在Objective-C中的许多其他地方使用(例如在为接口构建器定义IBAction
时,在定义init
方法等时)。
答案 1 :(得分:2)
id
有点像一个包罗万象的数据类型。它用于保存任何类型的值。
常用用于init...
方法的返回类型。它由集合类使用,因为它们可以容纳任何对象。请参阅各种getter方法返回值以及在可变版本的集合类中添加/设置对象的各种方法。
当您需要对可以是任何类但必须遵守协议的对象的引用时,它也与协议结合使用。示例包括许多委托属性,例如UITableView
delegate
。
答案 2 :(得分:2)
id是Objective-C中的通用对象类型。它可以容纳任何物体。
一个现实世界的例子:解析json你不会知道,如果根元素是数组或字典。但是id会把它们都带走。
我经常使用它,但通常与协议定义结合使用:id<NetworkPrinterProtocol>
。这意味着它应该是任何类型的对象,但它确实满足NetworkPrinterProtocol。通常用于定义代表。