xcode - ios loading问题
PHP中文网
PHP中文网 2017-04-18 09:04:53
0
3
418
// 操作1
dispatch_async(dispatch_get_main_queue(), ^{
    [SVProgressHUD show];//loading动画
});

// 操作2
NSArray *files = @[model];
DownFileDataControl *downVC = [[DownFileDataControl alloc]init];
downVC.rootViewController = curViewController;
downVC.thisModel = model;
downVC.modelList = files;
[downVC downLoadFlieToThePhoneWithThreeModel:model];//根据model对象里的一个文件地址去读取文件。读取完全后跳转到一个新的页面

(SVProgressHUD 是异步操作的话有办法改成同步吗)

上述代码,在一个方法体内写的,因为读取文件的时间比较长,所以想着在读取前加一个loading效果,但是加上之后,发现loading依然是等操作2执行完毕后才显示效果,操作2执行时候(读取文件)程序有一种假死的感觉,请问,是什么原因,如何让loading先出来,再执行操作2

PHP中文网
PHP中文网

认证0级讲师

répondre à tous(3)
Peter_Zhu

En général, vous n'avez pas besoin d'ajuster la méthode ProgressHUD. Au lieu de cela, vous devez déterminer quelles opérations prennent du temps, puis placer les opérations qui prennent du temps dans un thread non principal, sinon l'interface se bloquera.

[downVC downLoadFlieToThePhoneWithThreeModel:model];

Dans votre question, la mise en œuvre de cette phrase est la clé. Qu'avez-vous fait exactement et dans quel fil l'avez-vous fait ?

伊谢尔伦

Votre méthode est-elle exécutée dans le thread principal ? dispatch_async est distribué au thread principal pour exécuter de manière asynchrone l'animation de chargement. Ce code ne sera exécuté qu'à la prochaine boucle, donc le code ci-dessous sera exécuté avant l'affichage de l'animation de chargement. Supprimez dispatch_async et il sera synchronisé. downLoadFlieToThePhoneWithThreeModel:model est-il synchrone ou asynchrone ?

小葫芦

Étant donné que le thread dans GCD restera bloqué s'il s'exécute, utilisez d'abord [NSThread currentThread].isMainThread pour déterminer le thread principal. S'il s'agit du thread principal, il sera affiché directement.
L'opération 2 vérifie également si elle se trouve dans le thread principal, si elle se trouve dans le thread principal, elle est exécutée dans un autre thread via GCD.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal