即使对象存在,我也得到EXC_BAD_ACCESS(code = 1,address = 0x30)Bad Access - swift 4

时间:2018-02-14 20:24:19

标签: initialization swift4 exc-bad-access xcode9

This SO PostThis SO Post

类似

我初始化变量----> idHERE:

static func createPractitionerRole(fromRoleDict roleDict:[String: AnyObject])->PractitionerRole?{

    guard let (nameL, idL) = getRoleNameId(fromRoleDict:roleDict) else {
            return nil
    }

    let roleTypeL = ProTouchRoleType.determineRoleTypeFromProTouchId(idL)

    var idHERE =  Identifier(withValue: idL, systemParam:Constants.CodeSystem.ProTouch.coding_system_proTouchURL)

    print("idHERE \(String(describing:  idHERE))")

    print("idHERE.value \(String(describing:  idHERE.value))")

    return PractitionerRoleUtils.createPractitionerRole(withId:idHERE, name: nameL, roleType: roleTypeL)
}

在第一次打印时,它打印出对象:

idHERE Identifier Object- system:Optional(http://www.anyApp.com/any) value:Optional("319/43") use:usual period:nil

但是当我尝试使用时,第二次打印     idHERE.value - 我访问错误EXC_BAD_ACCESS(code = 1,address = 0x30)

这怎么可能?

调试器也显示所有值。

我尝试在发布模式下运行代码,没有任何帮助。

请帮忙!!

Xcode 9 swift4

另外,我将它从let更改为var,看看是否有所作为。

这是在一些复杂的代码之后,但我不确定为什么会产生影响。为什么,如果您初始化某些内容,则无法立即访问这些值。

此外,不会调用deinit。我有一个关于deinit的打印声明,它没有被调用。

谢谢!

enter image description here

1 个答案:

答案 0 :(得分:0)

我目前唯一的工作是将发布和调试的优化级别更改为-02。现在它"工作"。快速的人需要看看这个!!

Links to Look at Later 1

Also had bad access and changed optimization level