NSThread中cancle与exit的使用

NSThread中cancle与exit的使用,第1张

概述NSThread中cancle与exit的使用

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

@interface VIEwController ()/** 图片视图*/@property(nonatomic,weak) UIImageVIEw * imageVIEw;/** 图片数组*/@property(nonatomic,strong) NSMutableArray * imageArray;/** 存储线程*/@property(nonatomic,strong) NSMutableArray * threadArray;@end//对象方法cancle,可以在外部使用。//类方法exit,写在线程内部,结束当前现线程。//两者结合使用,使用cancle进行标记,使用exit退出@implementation VIEwController- (NSMutableArray *)imageArray{    if (_imageArray==nil) {        _imageArray =[NSMutableArray array];    }    return _imageArray;}- (NSMutableArray *)threadArray{    if (_threadArray==nil) {        _threadArray =[NSMutableArray array];    }    return _threadArray;}- (voID)vIEwDIDLoad{    [super vIEwDIDLoad];        //加载视图    [self _loadVIEws];        //开启多线程加载图片    [self _openMultiThread];    }//======加载这个,可以在主线程中加载- (voID) _loadVIEws{    for (int i=0;i<15; i++)    {        int col=i%3;        int row=i/3;                UIImageVIEw *imageVIEw=[[UIImageVIEw alloc] initWithFrame:CGRectMake(22+col*(80+45),40+row*(100+20),90,90)];        imageVIEw.backgroundcolor=[UIcolor redcolor];        [self.imageArray addobject:imageVIEw];                [self.vIEw addSubvIEw:imageVIEw];    }//    添加按钮     UIbutton * button=[UIbutton buttonWithType:UIbuttonTypeContactAdd];     button.frame=CGRectMake(0,20,20);     [button addTarget:self action:@selector(btClick) forControlEvents:UIControlEventtouchUpInsIDe];     [self.vIEw addSubvIEw:button];    }//开启多线程加载图片- (voID) _openMultiThread{    for (int i=0; i<self.imageArray.count; i++)    {//        [NSThread detachNewThreadSelector:@selector(loadImage:) toTarget:self withObject:@(i)];        //        要存数组就不能使用类方法创建线程        NSThread * thread = [[NSThread alloc] initWithTarget:self selector:@selector(loadImage:) object:@(i)];        [thread start];        [self.threadArray addobject:thread];    }}- (voID)loadImage:(NSNumber *) number{    //取到索引    NSInteger index=[number integerValue];       Nsstring * [email protected]"http://images.cnblogs.com/cnblogs_com/kenshincui/613474/o_%d.jpg";        imageSrc=[Nsstring stringWithFormat:imageSrc,index];            NSURL * URL=[NSURL URLWithString:imageSrc];    NSData * data=[NSData dataWithContentsOfURL:URL];    UIImage *image=[UIImage imageWithData:data];        //封装model    ImageModel * model=[[ImageModel alloc] init];    model.image=image;    model.index=index;       //如果状态为删除,则退出线程    NSThread * thread = [NSThread currentThread];    if ([thread isCancelled])    {        [NSThread exit];//执行exit,后边的语句不再执行。所以不用写return    //return也可以退出进程,一旦退出就不能再使用start开启    }    NSLog(@"%@",thread);    [self performSelectorOnMainThread:@selector(showImage:) withObject:model waitUntilDone:NO];}//回到主线程更新图片- (voID) showImage:(ImageModel *) model{    UIImageVIEw * imageVIEw=self.imageArray[model.index];    imageVIEw.image=model.image;}#pragma mark - 点击事件- (voID)btClick{//    当点击按钮时,对所有线程进行标记    for (NSThread * t in self.threadArray)    {        [t cancel];    }}

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的NSThread中cancle与exit的使用全部内容,希望文章能够帮你解决NSThread中cancle与exit的使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1106466.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存