爲什麼NSAttributedString
不是繼承NSString
? NSAttributedString
有父類作爲NSObject
爲什麼?爲什麼NSAttributedString沒有被NSString繼承? NSAttributedString具有父類作爲NSObject爲什麼?
回答
你爲什麼期望它是NSString
的子類?該類修改了文本,以至於NSString
和NSAttributedString
之間的相關性接近於比較NSString
和UILabel
。
雖然字符串上的很多方法都可以在屬性字符串上被覆蓋,如length,但爲空,子字符串......但其中很多方法可能不會。當屬性字符串被插入到其他方法時,情況會變得更糟:
例如字符串字體大小與屬性字符串完全不同,因爲它可能會在內部保存字體信息。其中一個或另一個的繪圖是完全不同的...
你能想象發送一個屬性字符串作爲字符串到其他數據結構。例如在不知情的情況下將屬性字符串打包到某些JSON數據或數據庫中。確定它在序列化時可能返回與NSString
相同的值,但如實地將序列化成某種形式的XML或HTML更有意義。這樣做的原因是您可以將其保存在某個地方以便重新使用所有數據。
無論如何,將NSString
轉換爲NSAttributedString
是不正確的,因爲兩者的功能和數據結構完全不同。你可以從圖紙的角度來看看,我猜兩者都可以擁有與DrawableText
相同的超類。但是除此之外的一切都毫無意義。例如,如果您比較了兩個屬性相同但字符串相同但屬性不同的字符串,那麼您會說這些字符串是否相同?大多數情況下,我會說「不」。 if !previousString.isEqual(newString) self.hasChanges = true
無效需要與其屬性不同。但是,像dictionary[myMutableString]
這樣的下標不應該包含屬性。
您可能會認爲「爲什麼有人會將屬性字符串用作關鍵字?」。這些事情是錯誤發生的。你有一個文本字段,有人通過使用它的屬性字符串使它更好一些,所以myTextField.text = myAttributedString
將工作,如果屬性的字符串是subclassed。但是myTextField.text
仍然被定義爲普通字符串。所以dictionary[myTextField.text]
看起來完全正確。
- 1. 爲什麼iPhone上沒有NSAttributedString?
- 2. 爲什麼在CSS中沒有繼承
- 3. 爲什麼爲MyModel ::數據()沒有被調用(繼承QSqlQueryModel)
- 4. 爲什麼子類繼承父類有錯?
- 5. 爲什麼Java Generic不能設計爲繼承父類Generic類?
- 6. C++繼承 - 爲什麼我的函數沒有被使用?
- 7. 有沒有什麼辦法可以將NSAttributedString轉換爲HTML格式?
- 8. 爲什麼繼承需要是「子類」NSObject?
- 9. 爲什麼我的Objective-C子類沒有繼承它父類的屬性?
- 10. 爲什麼NSString中有NSDecimalNumber?
- 11. 爲什麼沒有繼承的屬性可用於子類
- 12. 爲什麼我沒有得到的NSString
- 13. C++多繼承 - 爲什麼你沒有工作?
- 14. 爲什麼沒有NSHTTPURLProtocol類?
- 15. 爲什麼多個類繼承鑽石問題和多接口繼承沒有?
- 16. 你爲什麼繼承UIView?
- 17. 爲什麼箭頭繼承?
- 18. 我爲什麼要繼承?
- 19. 爲什麼嵌套類「繼承」?
- 20. 爲什麼繼承對象類型
- 21. 爲什麼一類從結構繼承
- 22. 爲什麼不能繼承SqlDataReader類?
- 23. 爲什麼我的類不是從父類繼承的?
- 24. 爲什麼子類不能繼承父類的常量?
- 25. 爲什麼有時超鏈接不會顯示在帶有NSAttributedString的NSTextField中?
- 26. 什麼行應該被取消註釋,爲什麼,繼承
- 27. C++爲什麼繼承不起作用?
- 28. 爲什麼派生類繼承基類的私有成員?
- 29. 爲什麼構造函數被調用,如果他們沒有被繼承?
- 30. 爲什麼我的子類不會繼承父類的所有方法?