Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如果窗口设置了“淡色”,则添加子视图时的性能为O(n^2)_Ios_Ios9 - Fatal编程技术网

Ios 如果窗口设置了“淡色”,则添加子视图时的性能为O(n^2)

Ios 如果窗口设置了“淡色”,则添加子视图时的性能为O(n^2),ios,ios9,Ios,Ios9,如果在ui窗口级别上设置tintColor(让所有视图继承它),addSubview的性能为O(n^2)。这意味着,如果将大量子视图添加到任何单个父视图中,则可能会获得极其糟糕的性能 作为测试,如果在这些条件下添加6000个子视图,则需要10分钟以上的时间才能全部添加。如果不设置tintColor添加那么多子视图需要1秒的时间 Bug归档为rdar://problem/25934331 目前可能的解决办法是什么?至少可以通过两种方式缓解此问题: 清除tintColor,添加子视图,然后立即将ti

如果在
ui窗口
级别上设置
tintColor
(让所有视图继承它),
addSubview
的性能为O(n^2)。这意味着,如果将大量子视图添加到任何单个父视图中,则可能会获得极其糟糕的性能

作为测试,如果在这些条件下添加6000个子视图,则需要10分钟以上的时间才能全部添加。如果不设置
tintColor
添加那么多子视图需要1秒的时间

Bug归档为rdar://problem/25934331


目前可能的解决办法是什么?

至少可以通过两种方式缓解此问题:

  • 清除
    tintColor
    ,添加子视图,然后立即将
    tintColor
    设置回其原始值。如果您在同一个runloop迭代中执行此操作,那么它通常不会在屏幕上显示

  • 在要添加的子视图上显式设置
    tintColor
    。在这种情况下,它似乎不会引发问题