亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        IOS開(kāi)發(fā)中多線程的使用

        字號(hào):


            一、創(chuàng)建多線程的五種方式
            1.開(kāi)啟線程的方法一
            NSThread * thread=[[NSThread alloc] initWithTarget:self selector:@selector(_update) object:nil];
            2.開(kāi)啟線程的方法二
            [NSThread detachNewThreadSelector:@selector(_update) toTarget:self withObject:nil];
            3.開(kāi)啟線程的方法三
            [self performSelectorInBackground:@selector(_update) withObject:nil];
            4.開(kāi)啟線程的方法四
            NSOperationQueue *queue=[[NSOperationQueue alloc] init];
            [queue addOperationWithBlock:^{
            for(int i=0;i<50;i++){
            printf("子線程 ");
            }
            }];
            5.開(kāi)啟線程的方法五
            //第一步開(kāi)啟線程池
            NSOperationQueue * queue=[[NSOperationQueue alloc] init];
            //設(shè)置并發(fā)數(shù)目
            [queue setMaxConcurrentOperationCount:2];
            //第二部創(chuàng)建多線程添加到線程池
            NSInvocationOperation * thread1=[[NSInvocationOperation alloc] initWithTarget:self selector:@selector(_update1) object:nil];
            NSInvocationOperation *thread2=[[NSInvocationOperation alloc] initWithTarget:self selector:@selector(_update2) object:nil];
            [thread1 setQueuePriority:NSOperationQueuePriorityVeryLow];
            [thread2 setQueuePriority:NSOperationQueuePriorityVeryHigh];
            [queue addOperation:thread1];
            [queue addOperation:thread2];
            二、多線程應(yīng)用實(shí)例,加載圖片。
            1.核心思想
            考慮到如果加載網(wǎng)絡(luò)圖片會(huì)延遲,在一個(gè)主線程加載會(huì)影響控件的渲染,此時(shí)可以采取多線程,異步加載完成后刷新UI。
            2.實(shí)現(xiàn)思路
            通過(guò)為UIImageView 增加類目來(lái)實(shí)現(xiàn)多線程下載。
            主要代碼:
            #import "UIImageView+thread.h"
            @implementation UIImageView(load)
            - (void) setImageWithUrl:(NSString *)url{
            [self performSelectorInBackground:@selector(_loadImage:) withObject:url];
            }
            - (void) _loadImage:(NSString *)u{
            @autoreleasepool {
            NSURL *url=[NSURL URLWithString:u];
            NSData *data=[NSData dataWithContentsOfURL:url];
            UIImage *image=[UIImage imageWithData:data];
            [self performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:NO];
            }
            }