为什么这个循环会冻结GUI?我该如何解决这个问题?
-(void)freeze {
for(int i=0; i<10000; i++) {
NSLog(@"write!");
}
}
如果我用IBAction(按钮)调用此循环,按钮和所有应用程序冻结按下它。循环完成后,一切正常。我该怎么办?
答案 0 :(得分:5)
您可以使用队列来避免阻止GUI,例如:
queue=dispatch_queue_create("my.queue", NULL);
dispatch_async(queue, ^{
//do blocking stuff here
});
答案 1 :(得分:3)
将方法更改为
-(void)freeze:(id)sender {
for(int i=0; i<10000; i++) {
NSLog(@"write!");
}
}
现在这样称呼:
[self performSelectorInBackground:@selector(freeze:) withObject:nil];