首页 文章

NSAttributedString的内部数据结构? [关闭]

提问于
浏览
0

我想继承NSAttributedString,但我不知道内部存储是怎样的 . NSAttributedString是NSObject的子类 . 很可能它使用NSString来存储字符和另一个数据结构来跟踪属性(例如颜色,字体) .

属性存储在NSDictionary中对某个字符范围(NSRange)有效,但属性也可以在字符范围内重叠 .

什么样的高效数据结构适合这种情况?为每个角色存储字典可能不是这样做的方法 .

编辑:我不知道我有多明确?我有我的自定义NSString子类,它可以完成我想要它做的事情 . 现在我想添加默认属性(颜色,字体类型,字体大小=> NSFontAttributeName,NSForegroundColorAttributeName等) . 我想在我自己的自定义NSTextStorage中使用我在NSTextView或UITextView中的自定义字符串 . NSTextStorage要求您提供自己的数据属性 . 我有字符串,但我仍然需要文本属性 .

编辑:为什么自定义NSAttributedString?我需要自己的自定义NSString(没有别的办法,我试过) . 该字符串必须显示给用户,并且需要NSAttributedString / NSTextStorage . 所以我还需要制作一个自定义的NSAttributedString .

2 回答

  • 1

    定义属性运行数组 . 将属性运行定义为具有以下属性的自定义对象:NSRange范围和NSMutableDictionary *属性 . 使用您自己在数组中查找的实现覆盖docs中描述的NSAttributedString的所有方法 . 现在你有自定义属性字符串类,它与原始字母完全可比,并且是它的子类 .

    (请注意,基础逻辑可能难以有效实施 . 如果您说出大局是什么,有人可能会提出另一种/更简单的方法来解决您的任务)

  • 1

    NSAttributedStringtoll-free bridged,带有CFAttributedString . 反过来,CFAttributedString是一种不透明的类型 . 在任何情况下,Apple都不会记录或提供对内部数据存储的访问 . 因此,您要求的信息没有官方来源 .

相关问题