菜鸟教程小白 发表于 2022-12-13 03:51:38

ios - 使用 GCD 在后台创建 UIKit 对象是一种不好的做法吗?


                                            <p><p>正如 <a href="https://stackoverflow.com/users/25646/bbum" rel="noreferrer noopener nofollow">bbum</a> 所指出的那样<a href="https://stackoverflow.com/a/18463249/2707614" rel="noreferrer noopener nofollow">here</a> ,
文档说:“<em>在大多数情况下,UIKit 类只能从应用程序的主线程中使用。对于派生类 UIResponder 尤其如此,或者以任何方式涉及对应用程序用户界面的操作。</em> "。</p>

<p>我以为我明白绘图的方法不能在后台线程中调用,所以可以在后台进行创建,因为drawRect方法只有在添加 View 时才会调用。但也许我错了。</p>

<p>总之,这种代码有风险吗?</p>

<pre><code>dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);

            dispatch_async(queue, ^{

                NSString *fileName = lastPathComponent]];

                UIImageView *imageView = [ initWithImage:[UIImage imageWithContentsOfFile:
                                                                           fileName]];
                UILabel *label=[initWithFrame:CGRectMake(10, 62, 190, 20)];
                someText]];
                ;
                label.font=;
                ];

                // Create some other view here
                // ...

                dispatch_async(dispatch_get_main_queue(), ^{
                  ;
                  ;
                  //Add other view here
                  // ...
                });
            });
</code></pre>

<p>提前感谢您的回复!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>是的,这是有风险的。风险有多大,只有 Apple 开发人员才能说。</p>

<p>如果文档说“不要使用它”,那就不要使用它。</p>

<p>请注意,许多 UI 对象可以(并且确实)使用共享资源。如果您在后台线程中使用它们,您将获得共享资源的竞争条件,并且任何事情都可能发生。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 GCD 在后台创建 UIKit 对象是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/18476540/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/18476540/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 GCD 在后台创建 UIKit 对象是一种不好的做法吗?