개발/Swift

[Swift] suspend resume partial function for 함수명 해결 방법

덤벨로퍼 2024. 3. 1. 13:11

“suspend resume partial function for 함수명”

라는 에러 발생

    
    public func isEnabled(_ key: Key) -> Bool {
        return dict[key]
    }

let keyword is a constant and, therefore, read-only and thread-safe. When a variable is declared as var it becomes mutable and not thread-safe unless the data type is specifically designed to be thread-safe when mutable.

let 쓰면 안전한데 var 쓰면 thread safe 하지 않음

특히 배열, 딕셔너리는 var 인경우 안전하지 않음

예로 쓰는 동시에 읽는 경우 문제 발생할수 있음

 public func read(_ key: Key) -> Bool {
        var value: Bool?
        serialQueue.sync {
            value = dict[key]
        }
        if let value = value {
            return value
        } else {
            return false
        }
       
    }

 

위 처럼 dict를 접근할때 직렬큐를 사용 (큐는 싱글톤 내부에서 생성해둠) 

그리고 write 할때도 마찬가지로 직렬큐 사용

 

참조 : https://sachithrasiriwardhane.medium.com/thread-safe-singletons-and-their-usage-in-swift-c992d34d85dd