Странный EXC_BAD_ACCESS при инициализации объекта - PullRequest
2 голосов
/ 06 февраля 2020

У меня странный EXC_BAD_ACCESS cra sh, я пытаюсь инициализировать объект, используя синглтон, как это:

@objc final class Toto: XSuperClass {

    /// Singleton
    @objc static var instance = Toto()


    /// Hide the creator to force using singleton
    @objc private init() {
        print("Initializer is called !")
        super.init(
            "xyz",
            serverHost: "",
            serverPath: ""
        )
    }

    @objc func update() {
        ...
    }

XSuperClass расширяется от NSObject и содержится в модуле.

В Appdelegate:

-(void)applicationDidBecomeActive:(UIApplication *)application
{
   [[Toto instance] update];
}

Иногда происходит сбой при: @objc static var instance = Toto() Thread 1: EXC_BAD_ACCESS (code=1, address=0x9)

Поток 1 содержит:

#11 0x0000000105a20004 in Toto.instance.unsafeMutableAddressor at /Users/.../Toto.swift
#10 0x00000001076196d9 in swift_once ()
#8  0x0000000107e5ad48 in _dispatch_client_callout ()
#7  0x0000000105a1ff90 in globalinit_33_0DC663E05309E94BD36536F7E931D58A_func0 at /Users/../Toto.swift
#6  0x0000000105a21028 in type metadata accessor for Toto ()
#0  0x0000000107602737 in swift_checkMetadataState ()

XSuperClass:

/** This class is the base class that handles ... */
@objc open class XSuperClass: NSObject {

...

/// Main initializer
    public init(_ feature: String,
                ... dependencies that all have default values,
                serverHost: String?,
                serverPath: String?
    ) {
        self.feature = feature
        ...
        self.serverHost = serverHost
        self.serverPath = serverPath
    }

Кажется, что я пытаюсь инициализировать освобожденный объект в памяти, но не могу понять, как это исправить, я потратил много времени на изучение проблемы без удачи Любые идеи, пожалуйста?

[редактировать] этот CRA SH происходит только на IOS 13

...