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

iOS之[多线程:NSThread]

2015-11-23 00:00 459 查看

1.线程的三种状态

isExecuting:正在执行->只读
isFinished :执行完了->只读
isCancelled:已经取消->可以手动干预,调用cancel()方法
- 只是设置线程状态,并不是真正的停止当前线程

2.创建新线程

将操作添加到线程中并直接启动

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

创建一个线程对象,然后调用start方法启动线程

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

3.线程控制

3.1启动线程
-(void)start;

3.2取消线程,可以在线程外部使用
-(void)cancel;

######3.3结束当前线程,写在线程内部

可以结合cancel方法进行exit

+(void)exit;

3.4睡眠
+ (void)sleepUntilDate:(NSDate *)date; //>>>睡眠到某个日时后,取消睡眠
+ (void)sleepForTimeInterval:(NSTimeInterval)ti; //>>>睡眠多长时间

4.线程优先级:threadPriority

线程优先级范围:0-1

每个线程默认优先级为0.5

优先级越大,只能说明被执行的几率越大,但是执行顺序还是随机的

+ (BOOL)setThreadPriority:(double)p;

5.扩展--NSObject分类扩展方法->NSObject (NSThreadPerformAdditions)

在后台执行一个操作,本质就是重新创建一个线程执行当前方法

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


在指定的某个线程上执行一个方法

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


在主线程上执行一个方法

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

===================================================

其它线程方式:

NSOperation
http://my.oschina.net/u/2462423/blog/534277

GCD:Dispatch
http://my.oschina.net/u/2462423/blog/534159
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS NSThread 多线程