繁体   English   中英

越来越奇怪的线程 1: EXC_BAD_ACCESS (code=1, address=0x9) 在 swift 崩溃错误

[英]getting strange Thread 1: EXC_BAD_ACCESS (code=1, address=0x9) crash error in swift

我正在为MyClass编写单元测试。 考虑下面的代码:

MyClass.swift

class MyClass {    
    let collectionPeriod: TimeInterval
    var previousCollectDate: Date?

    init(period: TimeInterval, previousCollectDate: Date?) {
        self.collectionPeriod = period
        self.previousCollectDate = previousCollectDate
    }

    func schedule() { }

    func collect() { }
}

MyClassTests.swift

import XCTest
@testable import MyModule

class CollectableTests: XCTestCase {

    var sut: MyClass!

    override func setUp() { }

    override func tearDown() {
        self.sut = nil
    }

    func testSchedule_NotScheduledBefore_CollectExecutesAfterCollectionPeriod() {
//        let _ = Collectable(period: 11, previousCollectDate: nil)

        self.sut = MockCollectable(suiteName: self.testSuiteName)

        self.sut?.schedule()
    }
}

class MockCollectable: Collectable {

    init(suiteName: String) {
        super.init(period: 5.0, previousCollectDate: Date())
    }    
}

奇怪的事情发生在这里,当我在这种情况下执行测试时,我在self.sut = MockCollectable(suiteName: self.testSuiteName)中遇到崩溃错误,但是当我添加(取消注释)行时let _ = Collectable(period: 11, previousCollectDate: nil) ,除了创建一个在代码中未使用的实例之外什么都不做,崩溃就会消失。 任何想法?

也许调试导航器信息会很有用:

#0  0x00000001d0dd2aec in swift_checkMetadataState ()
#6  0x0000000104858398 in type metadata accessor for CollectableTests.MockCollectable ()
#7  0x00000001048582c8 in CollectableTests.testSchedule_NotScheduledBefore_CollectExecutesAfterCollectionPeriod() 
#51 0x00000001c7a49d0c in UIApplicationMain ()
#52 0x00000001025882b0 in main 

我不知道为什么会发生这种情况,也不知道为什么下面的解决方案适用。 如果有人有更多信息,我会很高兴知道。

解决方案检查Allow testing Host Application APIs for test target in Xcode,修复错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM