我在學習Stanford's CS193P course。在課堂上,Paul有一個演示項目「計算器」,他使用id
作爲屬性的類型。他打算不使用特定的類,因爲他不想創建一個新的類,然後他不需要編寫文檔,甚至在更新時也不需要重新設計該類。 id
可以解決所有這些問題。在公共API中使用'id'作爲返回類型或參數類型是否有很好的理由?
這是一個真正的好方法嗎? id
是該屬性的返回類型,並用作另一個方法的參數類型。來電者如何知道id
是什麼,以及如何提供正確的對象?通過閱讀代碼評論?
一般來說,有沒有很好的理由在公共API中使用id
作爲返回類型或參數類型? (除init
和工廠方法,但即使對於那些,instancetype
建議。)
注意'instancetype' [是多餘其名稱的方法開始用'init'](http://clang.llvm.org/docs/LanguageExtensions.html#related-result-types)。 –
碰到'id'的地方最常見的地方是在訪問類似於JSON生成的NSArray或NSDictionary的元素時。在這種情況下,可能需要在運行時顯式測試以確定存在的類型。 –