码迷,mamicode.com
首页 > 移动开发 > 详细

iOS:多线程NSThread的详细使用

时间:2015-10-06 20:49:53      阅读:386      评论:0      收藏:0      [点我收藏+]

标签:

NSThread具体使用:直接继承NSObject


NSThread:.
优点:NSThread 是轻量级的,使用简单
缺点:需要自己管理线程的生命周期、线程同步。线程同步对数据的加锁会有一定的系统开销
 
1、属性
           @property (readonly, retain) NSMutableDictionary *threadDictionary;  //线程字典
           @property double threadPriority;                                                  //线程优先级
           @property NSQualityOfService qualityOfService;                           //服务质量
           @property (copy) NSString *name;                                              //线程名字
           @property NSUInteger stackSize;                                               //堆栈大小
           @property (readonly) BOOL isMainThread;                                   //是否是主线程
           @property (readonly, getter=isExecuting) BOOL executing ;              //线程是否正在执行
           @property (readonly, getter=isFinished) BOOL finished;                 //线程是否执行完毕
           @property (readonly, getter=isCancelled) BOOL cancelled ;               //线程是否取消
 
2、通知
           将成为多线程的通知
            FOUNDATION_EXPORT NSString * const NSWillBecomeMultiThreadedNotification; 
           已经成为单线程的通知
           FOUNDATION_EXPORT NSString * const NSDidBecomeSingleThreadedNotification;
           线程将要退出的通知
           FOUNDATION_EXPORT NSString * const NSThreadWillExitNotification;
 
3、主要方法    
              ※当前线程
             + (NSThread *)currentThread;
             ※创建线程的类方法,并添加执行事件

             + (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argument;

             ※是否是多线程

             + (BOOL)isMultiThreaded;

             ※定时休眠

             + (void)sleepUntilDate:(NSDate *)date;

             ※休眠时间

             + (void)sleepForTimeInterval:(NSTimeInterval)ti;

             ※退出线程

            + (void)exit;

            ※线程优先级

           + (double)threadPriority;

           ※设置线程优先级

           + (BOOL)setThreadPriority:(double)p;

           ※显示当前栈内容(返回的是这个线程在栈中所占的地址所组成的数组)

           + (NSArray *)callStackReturnAddresses;

           ※返回栈空间的符号

           + (NSArray *)callStackSymbols;

           ※是否是主线程

           + (BOOL)isMainThread; 

           ※创建线程的实例方法,并添加执行事件

           - (instancetype)initWithTarget:(id)target selector:(SEL)selector object:(id)argument;

           ※取消线程

           - (void)cancel;

           ※启动线程

           - (void)start;

           ※线程主体要执行的方法 :thread body method

           - (void)main;

 
4、类别:@interface NSObject (NSThreadPerformAdditions)    

※调用主线程更新UI

- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait modes:(NSArray *)array;

※调用主线程

- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;

※调用指定的线程更新数据

- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait modes:(NSArray *)array;

※调用指定的线程

- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait;

※在后台调用线程

- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg; 

iOS:多线程NSThread的详细使用

标签:

原文地址:http://www.cnblogs.com/XYQ-208910/p/4857689.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!