微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

引用闭包中的属性需要显式的“自我”使捕获语义明确

如何解决引用闭包中的属性需要显式的“自我”使捕获语义明确

在回答这个问题之前,您必须知道什么是存储周期。请参阅根据Apple的文档解决类实例之间的强引用循环

现在您知道什么是内存周期:

错误是Swift编译器告诉您

“嘿,NSURLSession 关闭 正在尝试 webviewHTML 在堆中,因此 ==>创建了一个内存循环,我认为克拉克先生不想在这里。想像一下,如果我们发出一个需要花费很长时间的请求,然后用户进行导航离开这个页面。它不会离开堆。我只是告诉 你,但是,克拉克先生必须为自身创建一个弱引用,并 在闭包中 使用它。”

我们使用创建(即捕获 引用[weak self]。我强烈建议您查看附件中有关捕获含义的链接

有关更多信息,请参阅斯坦福课程的这一刻

func post(url: String, params: String) {

    let url = NSURL(string: url)
    let params = String(params);
    let request = NSMutableuRLRequest(URL: url!);
    request.HTTPMethod = "POST"
    request.HTTPBody = params.dataUsingEncoding(NSUTF8StringEncoding)

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
        [weak weakSelf self] data, response, error in

        if error != nil {
            print("error=\(error)")
            return
        }

        var responseString : Nsstring!;
        responseString = Nsstring(data: data!, encoding: NSUTF8StringEncoding)

        weakSelf?.webviewHTML.loadHTMLString(String(responseString), baseURL: nil)
        // USED `weakSelf?` INSTEAD OF `self` 
    }
    task.resume();
}

解决方法

尝试将HTML从Web服务加载到Webview中时,出现以下错误:

在闭包中引用属性“ webviewHTML”需要显式的“自我”。使捕获语义明确

这是什么意思,如何将HTML字符串加载到Web视图中?

func post(url: String,params: String) {

    let url = NSURL(string: url)
    let params = String(params);
    let request = NSMutableURLRequest(URL: url!);
    request.HTTPMethod = "POST"
    request.HTTPBody = params.dataUsingEncoding(NSUTF8StringEncoding)

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
        data,response,error in

        if error != nil {
            print("error=\(error)")
            return
        }

        var responseString : NSString!;
        responseString = NSString(data: data!,encoding: NSUTF8StringEncoding)
        webviewHTML.loadHTMLString(String(responseString),baseURL: nil)
    }
    task.resume();
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。