yuankui
V2EX  ›  Swift

这个是 Swift 的坑?

  •  
  •   yuankui · Aug 17, 2021 · 2504 views
    This topic created in 1907 days ago, the information mentioned may be changed or developed.
    import Foundation
    
    extension String {
        typealias HttpCallback = (Data?, URLResponse?, Error?) -> Void
        
        func get(_ callback: @escaping HttpCallback) -> URLSessionTask {
            let url = URL(string: self)!
            let task = URLSession.shared.dataTask(with: url) { [task] data, response, error in
            
                callback(data, response, error)
            }
    
            task.resume()
            return task
        }
    }
    
    let task = "https://www.badiu.com".get { data, response, error in
        let str = String(data: data!, encoding: .utf8)
        print(str ?? "response")
    }
    
    
    
    
    sleep(200)
    

    自己的原意是扩展性 string,实现一个方便执行 http 的库,结果不生效。

    上面的代码如果展开,在外面执行就没问题。

    有没有大佬清楚我是踩到什么坑了吗?

    8 replies  •  2021-08-17 15:04:45 +08:00
    ezrealinxh
    ezrealinxh
    Aug 17, 2021
    1
    不生效是指?
    yuankui
    yuankui
    OP
    Aug 17, 2021
    2
    @Lin0936 没有 print 出来东西,我断电了,也没有执行到 pring 那一行
    yuankui
    yuankui
    OP
    Aug 17, 2021
    3
    断点
    beimenjun
    beimenjun
    Aug 17, 2021
    4
    因为你的域名把 baidu 写成了 badiu
    hstdt
    hstdt
    Aug 17, 2021 via iPhone
    5
    网址不存在超时了,多等会
    beimenjun
    beimenjun
    Aug 17, 2021
    6
    然后没有拿到 data 你又对 data 进行强制解包,当然不会走到 print 的地方,因为在前一步就挂了。
    ezrealinxh
    ezrealinxh
    Aug 17, 2021
    7
    @yuankui baidu 拼错了。
    yuankui
    yuankui
    OP
    Aug 17, 2021
    8
    羞耻啊。。的确是拼错了。。浪费大家时间了,我还以为是 swift 的 ARC,或者循环引用相关的的呢
    感谢各位。

    @Lin0936
    @beimenjun
    @hstdt
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1391 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 17:05 · PVG 01:05 · LAX 09:05 · JFK 12:05
    ♥ Do have faith in what you're doing.