【问题标题】:Implicit use of self in Swift closure在 Swift 闭包中隐式使用 self
【发布时间】:2019-04-30 20:58:39
【问题描述】:

我有以下测试类:

import XCTest
@testable import DogYears

class DogYearsTests: XCTestCase {

    let calc = Calculator()
    var resData: Data? = nil

    override func setUp() {
        // Put setup code here. This method is called before the invocation of each test method in the class.
    }

    override func tearDown() {
        // Put teardown code here. This method is called after the invocation of each test method in the class.
    }

    func testResult(){
        let res1 = calc.evaluate(op: "+", arg1: 2.0, arg2: 9.0)
        let res2 = calc.result
        XCTAssert(res1 == res2)
    }

    func testInfoLoading(){

        let url = "https://raw.githubusercontent.com/FahimF/Test/master/DogYears-Info.rtf"
        HTTPClient.shared.get(url: url) { (data, error) in
            XCTAssertNil(error)
            XCTAssertNotNil(data, "empty data")
            self.resData = data
            let predicate = NSPredicate(format: "resData != nil")
            let exp = expectation(for: predicate, evaluatedWith: nil, handler: nil)

        }
    }
}

在线:

 let exp = expectation(for: predicate, evaluatedWith: nil, handler: nil)

编译器用红色错误警告我:

在闭包中隐式使用“self”;使用“自我”。使捕获语义明确

但我不使用任何自变量。为什么不编译?

【问题讨论】:

  • 或许self.expectation(....

标签: swift


【解决方案1】:

由于 DogYearsTests 继承自 XCTestCase,expectation 是你的类的一个方法,所以你应该用 self 来调用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 2017-11-27
    • 2015-09-04
    • 2014-12-02
    相关资源
    最近更新 更多