您的位置:首页 > 移动开发 > IOS开发

IOS学习--performSelectorOnMainThread

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

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

类似android的activity.runOnUIThread(new Runnable(){
public void run () {
...................
}
});

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

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

比如说你已经定义了一个- (void)updateLabel:(NSString *)txt{}的方法.在此方法中更新界面即可.即时看到结果。

注意点

1:

发现一个问题,就是如果从另外一个线程向主线程传对象updateData,如果你这个updateData在调用performSelectorOnMainThread之后马上释放的话

到真正@selector那个方法取updateData的时候已经不可用了.建议使用lock机制访问资源。

2:如果主线程忙于其他的事情,子线程即使调用performSelectorOnMainThread更新了也不会更新在界面上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: