Обновление inout param async не обновляет ссылку

Используя игровую площадку ниже, когда я печатаю в асинхронном режиме, я предполагаю, что значения должны быть одинаковыми, но это не так. Кажется, что Swift не правильно использует inout асинхронно, но мне нужно иметь возможность обновить ссылку inout в асинхронном вызове. Есть идеи, как заставить это работать?

import XCPlayground
import Foundation
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true


class MyObject {

    var name:String!
    var id:Int!

    init(name:String, id:Int){
        self.name = name
        self.id = id
    }

}

struct TempStorage {
    static var baseObjs:[MyObject] = []
}

class myUtils {

    private static func myFunc2(inout myObjs:[MyObject]){

        let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
        dispatch_async(dispatch_get_global_queue(priority, 0)) {
            let newObj = MyObject(name: "BOB", id: 1)
            myObjs = [newObj]
            print(myObjs.count)
            print(TempStorage.baseObjs.count)
        }


    }

    static func myFunc(inout myObjs:[MyObject]) {
        myUtils.myFunc2(&myObjs)
    }
}

var baseObj = MyObject(name:"SUSY", id:0)
print(TempStorage.baseObjs.count)
myUtils.myFunc(&TempStorage.baseObjs)

0 ответов

Другие вопросы по тегам