首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果弱则检查Swift协议属性

如果弱则检查Swift协议属性
EN

Stack Overflow用户
提问于 2017-12-08 15:40:37
回答 1查看 221关注 0票数 0

如果类属性是弱的或者不是弱的,那么在XCTest中是否可以测试它。

代码语言:javascript
复制
class A {
  weak var p: String? = nil
}

结果:如果类的p属性是弱的,则断言为

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-08 15:59:10

您可以使用这样的方法:

代码语言:javascript
复制
class TestObject {}

protocol A {
    var a: TestObject? { get set }
}

class B: A {
    var a: TestObject?
}

class C: A {
    weak var a: TestObject?
}

func addVar(to: A) {
    var target = to
    target.a = TestObject()  // Once we leave the scope of this function, the TestObject instance created here will be released unless retained by target
}

let b = B()
let c = C()

addVar(to: b)
addVar(to: c)

print(b.a)  // prints Optional(TestObject) because class C uses a strong var for a
print(c.a)  // prints nil because class B uses a weak var for a

转换为测试用例时,它可能如下所示:

代码语言:javascript
复制
func testNotWeak() {

    func addVar(to: A) {
        var target = to
        target.a = TestObject()  // Once we leave the scope of this function, the TestObject instance created here will be released unless retained by target
    }

    let testClass = B()
    addVar(to: testClass)
    XCTAssertNotNil(testClass.a)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47717567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档