Ios NSMutableAttributeString是否自动连接相同的相邻属性?

Ios NSMutableAttributeString是否自动连接相同的相邻属性?,ios,core-text,nsattributedstring,Ios,Core Text,Nsattributedstring,我们的iOS应用程序中有一个简单的标记解析器,它通过迭代简单的NSString中的每个字符并生成一个nsmutableAttributeString,将带有类似HTML标记的文本转换为nsAttributeString 在最坏的情况下,我们在遍历字符串时为每个字符添加了一组新的属性,nsmutableAttributeString是否足够智能,可以将相同的相邻属性范围连接在一起并进行优化?或者在核心文本中呈现会非常低效和缓慢吗 我并不是说这是一个好的算法!我只是在看一个最坏的情况,想知道nsmu

我们的iOS应用程序中有一个简单的标记解析器,它通过迭代简单的
NSString
中的每个字符并生成一个
nsmutableAttributeString
,将带有类似HTML标记的文本转换为
nsAttributeString

在最坏的情况下,我们在遍历字符串时为每个字符添加了一组新的属性,
nsmutableAttributeString
是否足够智能,可以将相同的相邻属性范围连接在一起并进行优化?或者在核心文本中呈现会非常低效和缓慢吗


我并不是说这是一个好的算法!我只是在看一个最坏的情况,想知道
nsmutableAttributeString
是否有任何内置的智能行为?

我只是尝试了类似的方法(我真实代码的简化版本):

换句话说,我添加了两个相邻的粗体属性。然后我查看了结果:

NSLog(@"%@", text);
输出显示了三个文本块:正常字体的“Test”,粗体的“foobar”,以及正常字体的“hey”

因此,要回答您的问题,是的,看起来NSMutableAttributedString中自动加入了两个相邻的格式范围


另一方面,我注意到,如果我应用了一个范围跨越换行符的属性,得到的NSAttributedString将在换行符之前有一个属性,在换行符之后有一个属性,换行符本身将没有任何属性。因此,如果您一次解析一个字符,您可能需要对此进行补偿。

您已经解决了这个问题吗?我在我的应用程序中运行了一些类似的代码,我可以向它提供一些输入来触发这种行为,并查看我得到了什么输出。不,从来没有发现。忽略了这个问题,因为它没有引起任何问题,但我仍然很想知道答案!美好的我还尝试了一个附加另一个
NSAttributedString
的简单测试,它也正确地连接了其中的属性。
NSLog(@"%@", text);