IOS学习 info.plist 文件加两行代码 多线程NSThread/GCD 异步下载网络图片

编辑 info.plist,加入如下设置:
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>


#import "ViewController.h"

@interface ViewController ()

/*strong:强引用

 *weak:弱引用,释放后指向0地址

 *assign:释放后指针指向不变,即野指针 */

@property (nonatomic,retain)UIImageView *downIV;

@property (weak,nonatomic)UIScrollView *scrollView;

@end


@implementation ViewController

//重写此方法,默认不会加载Xib&Sb

-(void)loadView{

    //下面错误写法,weak,对象将在赋值之后释放,对象为空

//    _scrollView = [[UIScrollView alloc]initWithFrame:[UIScreen mainScreen].bounds];

    UIScrollView *sc = [[UIScrollViewalloc]initWithFrame:[UIScreenmainScreen].bounds]; //取设备屏幕大小

    self.scrollView = sc;

    self.view = sc;

    

    UIImageView *imageView = [[UIImageViewalloc]init];

    [self.viewaddSubview:imageView];

    _downIV = imageView;

}


- (void)viewDidLoad {

    [superviewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    [selfdownloadImage];

    //创建线程

    NSThread *thread = [[NSThreadalloc]initWithTarget:selfselector:@selector(downloadImage)object:nil];

    [thread start];

}


//下载图片

-(void)downloadImage{

    NSLog(@"downloadImage %@",[NSThreadcurrentThread]);

    //休眠

//    [NSThread sleepForTimeInterval:2];

    

    _downIV = [[UIImageViewalloc]initWithFrame:self.view.frame];

    [self.viewaddSubview:_downIV];

    

    NSString *path =@"http://img.tuku.cn/file_big/201503/55b7341dbe084fa6b995a33f2407c0e0.jpg";

    NSURL *url = [NSURLURLWithString:path];

    NSData *data = [NSDatadataWithContentsOfURL:url];

    UIImage *image = [UIImageimageWithData:data];

    

    //线程间通信 ->

    /*参数1:方法

     *参数2:方法的参数

     *参数3:等待执行完成  */

    [selfperformSelectorOnMainThread:@selector(updateUI:)withObject:imagewaitUntilDone:NO];

}


//更新UI,所有对UI的操作都需要放在主线程里

- (void)updateUI:(UIImage *)image{

    NSLog(@"update %@",[NSThreadcurrentThread]);

    _downIV.image = image;

    //按图片大小显示

    [self.downIVsizeToFit];

    [_scrollViewsetContentSize:image.size];

}

@end





//GCD 简单写法

- (void)viewDidLoad {

    [superviewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    dispatch_async(dispatch_get_global_queue(0,0), ^{

        _downIV = [[UIImageViewalloc]initWithFrame:self.view.frame];

        [self.viewaddSubview:_downIV];

        

        NSString *path =@"http://img.tuku.cn/file_big/201503/55b7341dbe084fa6b995a33f2407c0e0.jpg";

        NSURL *url = [NSURLURLWithString:path];

        NSData *data = [NSDatadataWithContentsOfURL:url];

        //闭包

        UIImage *image = [UIImageimageWithData:data];

        

        //线程间通信

        dispatch_async(dispatch_get_main_queue(), ^{

            NSLog(@"update %@",[NSThreadcurrentThread]);

            //按图片大小显示

            self.downIV.image = image;

            [self.downIVsizeToFit];

            [_scrollViewsetContentSize:image.size];

        });

    });

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值