V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yuankui
V2EX  ›  Swift

这个是 Swift 的坑?

  •  
  •   yuankui · 105 天前 · 556 次点击
    这是一个创建于 105 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 条回复    2021-08-17 15:04:45 +08:00
    Lin0936
        1
    Lin0936   105 天前
    不生效是指?
    yuankui
        2
    yuankui   105 天前
    @Lin0936 没有 print 出来东西,我断电了,也没有执行到 pring 那一行
    yuankui
        3
    yuankui   105 天前
    断点
    beimenjun
        4
    beimenjun   105 天前
    因为你的域名把 baidu 写成了 badiu
    hstdt
        5
    hstdt   105 天前 via iPhone
    网址不存在超时了,多等会
    beimenjun
        6
    beimenjun   105 天前
    然后没有拿到 data 你又对 data 进行强制解包,当然不会走到 print 的地方,因为在前一步就挂了。
    Lin0936
        7
    Lin0936   105 天前
    @yuankui baidu 拼错了。
    yuankui
        8
    yuankui   105 天前
    羞耻啊。。的确是拼错了。。浪费大家时间了,我还以为是 swift 的 ARC,或者循环引用相关的的呢
    感谢各位。

    @Lin0936
    @beimenjun
    @hstdt
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3991 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 06:28 · PVG 14:28 · LAX 22:28 · JFK 01:28
    ♥ Do have faith in what you're doing.