我正在向Stanford's CS193P course学习。在课堂上,Paul有一个演示项目,"计算器",他使用id
作为属性的类型。他打算不使用特定的类,因为他不想创建一个新类,然后他不需要编写文档,即使更新它,他也不需要重新设计类。 id
可以解决所有这些问题。
这真是一个好方法吗? id
是属性的返回类型,并用作另一个方法的参数类型。调用者如何知道id
是什么,以及如何提供正确的对象?通过阅读代码评论?
通常,有没有什么好的理由在公共API中使用id
作为返回类型或参数类型? (除了init
和工厂方法,但即使是那些,建议使用instancetype
。)
答案 0 :(得分:1)
如果您的方法返回的类是类集群的成员,则应返回id
。
如果您要返回其类不透明的对象,但未在公共标头中声明,则应返回id
。 (Cocoa偶尔会使用诸如令牌或上下文数据之类的对象。)
容器类应始终接受并将其成分返回为id
s。