为什么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. 为什么子类继承父类有错?
- 4. 有没有什么办法可以将NSAttributedString转换为HTML格式?
- 5. C++继承 - 为什么我的函数没有被使用?
- 6. 为什么继承需要是“子类”NSObject?
- 7. 为什么我的Objective-C子类没有继承它父类的属性?
- 8. 为什么NSString中有NSDecimalNumber?
- 9. C++多继承 - 为什么你没有工作?
- 10. 为什么没有NSHTTPURLProtocol类?
- 11. 为什么箭头继承?
- 12. 为什么有时超链接不会显示在带有NSAttributedString的NSTextField中?
- 13. 为什么不能继承SqlDataReader类?
- 14. 为什么继承对象类型
- 15. 为什么嵌套类“继承”?
- 16. NSAttributedString文本作为按钮?
- 17. 什么行应该被取消注释,为什么,继承
- 18. 为什么构造函数被调用,如果他们没有被继承?
- 19. 为什么派生类继承基类的私有成员?
- 20. 为什么我的子类不会继承父类的所有方法?
- 21. 为什么div没有在其父母
- 22. 为什么没有主题继承按钮样式
- 23. V8:为什么WeakReferenceCallback没有被调用?
- 24. 为什么没有被网格
- 25. 为什么onBackPressed()没有被调用?
- 26. 为什么模板没有被渲染?
- 27. 为什么函数没有被调用?
- 28. 为什么myArray没有被初始化?
- 29. 为什么SqlDependency.OnChange没有被解雇?
- 30. 为什么进度没有被触发?