IOS学习--performSelectorOnMainThread

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更新了也不会更新在界面上。


你可能感兴趣的:(IOS学习--performSelectorOnMainThread)