ios - 关于GCD定时器无效
PHPz
PHPz 2017-04-18 09:24:44
0
1
307

在使用GCD定时器时,系统的代码块并不好用

dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
dispatch_source_set_event_handler(timer, ^{
    NSLog(@"+++++定时器+++++");
});
dispatch_resume(timer);

只有将 dispatch_source_t timer 写成属性handle event才会被调用

@property (nonatomic, strong) dispatch_source_t timer;

dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
_timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
dispatch_source_set_timer(_timer, DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
dispatch_source_set_event_handler(_timer, ^{
    NSLog(@"+++++定时器+++++");
});
dispatch_resume(_timer);

这是为什么呢?

PHPz
PHPz

学习是最好的投资!

répondre à tous(1)
Ty80

Gestion de la mémoire... Parce que vous êtes un ARC, l'objet que vous créez sera valide dans son périmètre. Une fois sorti de son périmètre, s'il n'y a pas de référence forte, l'objet sera détruit naturellement. vous pouvez écrire comme attribut. Raison de l'utilisation.

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