zoukankan      html  css  js  c++  java
  • NSThread 的创建和使用

    线程 创建与启动  
    NSThread的创建主要有两种直接方式: 
    [NSThread detachNewThreadSelector:@selector(myThreadMainMethod:) toTarget:self withObject:nil]; 
    和 
    NSThread* myThread = [[NSThread alloc] initWithTarget:self 
                                            selector:@selector(myThreadMainMethod:) 
                                            object:nil]; 
    [myThread start]; 
     
    这两种方式的区别是:前一种一调用就会立即创建一个
     线程 来做事情;而后一种虽然你 alloc 了也 init了,但是要直到我们手动调用 start 启动线程 时才会真正去创建线程 。 
    这种延迟实现思想在很多跟资源相关的地方都有用到。后一种方式我们还可以在启动线程 之前,对线程 进行配置,比如设置 stack 大小,线程 优先级。 
     
    还有一种间接的方式,更加方便,我们甚至不需要显式编写 NSThread 相关代码。那就是利用 NSObject 的类方法 performSelectorInBackground:withObject: 来创建一个
     线程 : 
    [myObj performSelectorInBackground:@selector(myThreadMainMethod) withObject:nil]; 
    其效果与 NSThread 的 detachNewThreadSelector:toTarget:withObject: 是一样的。 

    ******************************

    如在我们在某个 线程 中下载数据,下载完成之后要通知主线程 中更新界面等等,可以使用如下接口:- (void)myThreadMainMethod 

        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
        // to do something in your thread job 
        ... 
        [self performSelectorOnMainThread:@selector(updateUI) withObject:nil waitUntilDone:NO]; 
        [pool release]; 
    }
      

  • 相关阅读:
    web服务器iis安全设置
    Log explorer for sql server
    C#将image中的显示的图片转换成二进制
    .Net平台开发的技术规范与实践精华总结
    .net面试题整理
    Javascript 刷新框架及页面的方法总集
    WEB程序代码优化入手的几方面
    用js控制网页播放器
    SQL Server2000中死锁经验总结
    专家谈CSS设计
  • 原文地址:https://www.cnblogs.com/ygm900/p/2880080.html
Copyright © 2011-2022 走看看