问题描述
- performSelecterOnMainThread
- iOS线程里面的performSelecterOnMainThread函数是干什么的
解决方案
参考:
http://blog.sina.com.cn/s/blog_7b9d64af01019j2n.html
在做项目中,要提高效率,就必须使用多线程。
多线程,在网上搜索,有很多方法使用。
今天,接触到了performSelectorOnMainThread 方法。
NSAutoreleasePool *pool =[[NSAutoreleasePool alloc] init];
[self performSelectorOnMainThread:@selector(RefreshCellForLiveId:)
withObject:userinfo
waitUntilDone:YES];
[pool release];
该方法的作用是在主线程中,执行制定的方法(代码块)。
参数:
@selector(RefreshCellForLiveId:)就是,要定义我们要执行的方法。
withObject:userinfo
定义了,我们执行RefreshCellForLiveId:方法时,传入的参数对象。类型是id。(我们可以传入任何参数)
waitUntilDone:YES];
指定,当前线程是否要被阻塞,直到主线程将我们制定的代码块(RefreshCellForLiveId:方法)执行完。
注意:
1.当前线程为主线程的时候,waitUntilDone:YES参数无效。
2.该方法,没有返回值
3.该方法主要用来用主线程来修改页面UI的状态。
在做项目中,要提高效率,就必须使用多线程。
多线程,在网上搜索,有很多方法使用。
今天,接触到了performSelectorOnMainThread 方法。
NSAutoreleasePool *pool =[[NSAutoreleasePool alloc] init];
[self performSelectorOnMainThread:@selector(RefreshCellForLiveId:)
withObject:userinfo
waitUntilDone:YES];
[pool release];
该方法的作用是在主线程中,执行制定的方法(代码块)。
参数:
@selector(RefreshCellForLiveId:)就是,要定义我们要执行的方法。
withObject:userinfo
定义了,我们执行RefreshCellForLiveId:方法时,传入的参数对象。类型是id。(我们可以传入任何参数)
waitUntilDone:YES];
指定,当前线程是否要被阻塞,直到主线程将我们制定的代码块(RefreshCellForLiveId:方法)执行完。
注意:
1.当前线程为主线程的时候,waitUntilDone:YES参数无效。
2.该方法,没有返回值
3.该方法主要用来用主线程来修改页面UI的状态。
解决方案二:
在主线程上操作某个方法不过不建议多用
解决方案三:
在主线程执行某个方法。一般用在多线程里面,线程获取数据,用它更新UI。
解决方案四:
在主线程执行某个方法。一般用在多线程里面,线程获取数据,用它更新UI。
解决方案五:
在做项目中,要提高效率,就必须使用多线程。多线程,在网上搜索,有很多方法使用。今天,接触到了performSelectorOnMainThread 方法。NSAutoreleasePool *pool =[[NSAutoreleasePool alloc] init]; [self performSelectorOnMainThread:@selector(RefreshCellForLiveId:) withObject:userinfo waitUntilDone:YES]; [pool release];该方法的作用是在主线程中,执行制定的方法(代码块)。参数:@selector(RefreshCellForLiveId:)就是,要定义我们要执行的方法。withObject:userinfo定义了,我们执行RefreshCellForLiveId:方法时,传入的参数对象。类型是id。(我们可以传入任何参数)waitUntilDone:YES];指定,当前线程是否要被阻塞,直到主线程将我们制定的代码块(RefreshCellForLiveId:方法)执行完。注意:1.当前线程为主线程的时候,waitUntilDone:YES参数无效。2.该方法,没有返回值3.该方法主要用来用主线程来修改页面UI的状态。