zoukankan      html  css  js  c++  java
  • Swift

    过去通过 NSURLConnection.sendSynchronousRequest() 方法能同步请求数据。从iOS9起,苹果建议废除 NSURLConnection,使用 NSURLSession 代替 NSURLConnection。
     
    如果想要 NSURLSession 也能够同步请求,即数据获取后才继续执行下面的代码,使用信号、信号量就可以实现。

    样例如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    //创建NSURL对象
    let urlString:String="http://hangge.com"
    let url:NSURL! = NSURL(string:urlString)
    //创建请求对象
    let request:NSURLRequest = NSURLRequest(URL: url)
             
    let session = NSURLSession.sharedSession()
             
    let semaphore = dispatch_semaphore_create(0)
             
    let dataTask = session.dataTaskWithRequest(request,
        completionHandler: {(data, response, error) -> Void in
            if error != nil{
                print(error?.code)
                print(error?.description)
            }else{
                let str = NSString(data: data!, encoding: NSUTF8StringEncoding)
                print(str)
            }
                     
            dispatch_semaphore_signal(semaphore)
    }) as NSURLSessionTask
             
    //使用resume方法启动任务
    dataTask.resume()
             
    dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER)
    print("数据加载完毕!")
    //继续执行其他代码.......

    原文出自:www.hangge.com  转载请保留原文链接:http://www.hangge.com/blog/cache/detail_816.html
  • 相关阅读:
    if else配对问题
    未完
    c,c++,java格式总结
    c++笔记
    Vaadin
    J2msi 自己制作的把exe打成安装包简易GUI程序(第二版 带DLL注册)
    scala手动编译运行
    jframe去掉窗体
    jdk1.7
    vbox共享文件 挂载
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4858349.html
Copyright © 2011-2022 走看看