您的位置:首页 > 大数据 > 人工智能

多线程的使用(1) - performSelectorOnMainThread

2013-05-23 22:53 495 查看
在做项目中,要提高效率,就必须使用多线程。

多线程,在网上搜索,有很多方法使用。

今天,接触到了performSelectorOnMainThread 方法。

NSAutoreleasePool *pool =[[NSAutoreleasePool alloc] init];
[self performSelectorOnMainThread:@selector(RefreshCellForLiveId:)
withObject:userinfo
waitUntilDone:YES];
[pool release];


该方法的作用是在其他线程中,执行主线程制定的方法(代码块,一般用于跟新UI)。

参数:

@selector(RefreshCellForLiveId:)就是,要定义我们要执行的方法。

withObject:userinfo

定义了,我们执行RefreshCellForLiveId:方法时,传入的参数对象。类型是id。(我们可以传入任何参数)

waitUntilDone:YES];

指定,当前线程是否要被阻塞,直到主线程将我们制定的代码块(RefreshCellForLiveId:方法)执行完。

注意:

1.当前线程为主线程的时候,waitUntilDone:YES参数无效。

2.该方法,没有返回值

3.该方法主要用来用主线程来修改页面UI的状态。

------------------------------------------------------------------------------------------------------------------------------------------------------

iphone开发中,在主线程之外的线程更新主线程所显示的界面元素,不能直接调用主线程的类的更新界面的方法,否则界面看不到任何结果

.而是需要有个缓冲,叫做

performSelectorOnMainThread

使用方法是,在线程调用到更新界面那个类的时候,在更新界面前,通过如下调用.

[self performSelectorOnMainThread:@selector(updateLabel:) withObject:updateData waitUntilDone:YES];


比如说你已经定义了一个- (void)updateLabel:(NSString *)txt{}的方法.在此方法中更新界面即可.即时看到结果.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: