有没有什么好理由使用' id'作为公共API中的返回类型或参数类型?

时间:2014-04-13 18:00:39

标签: objective-c types return-type

我正在向Stanford's CS193P course学习。在课堂上,Paul有一个演示项目,"计算器",他使用id作为属性的类型。他打算不使用特定的类,因为他不想创建一个新类,然后他不需要编写文档,即使更新它,他也不需要重新设计类。 id可以解决所有这些问题。

这真是一个好方法吗? id是属性的返回类型,并用作另一个方法的参数类型。调用者如何知道id是什么,以及如何提供正确的对象?通过阅读代码评论?

通常,有没有什么好的理由在公共API中使用id作为返回类型或参数类型? (除了init和工厂方法,但即使是那些,建议使用instancetype。)

1 个答案:

答案 0 :(得分:1)

  1. 如果您的方法返回的类是类集群的成员,则应返回id

  2. 如果您要返回其类不透明的对象,但未在公共标头中声明,则应返回id。 (Cocoa偶尔会使用诸如令牌或上下文数据之类的对象。)

  3. 容器类应始终接受并将其成分返回为id s。