У меня есть статический getData()
метод в классе ServerCommunication
, я могу вызвать этот метод из фоновой очереди.
//ServerCommunication.swift
import UIKit
import Foundation
class ServerCommunication
{
class func getData(url: String, sessionId: String) -> ServerResponse {
//server communication code goes here
}
}
func populateData() {
DispatchQueue.global(qos: .background).async {
let response = ServerCommunication.getData(url: URL, sessionId: "")
}
}
Кто-нибудь может объяснить, как это повлияет на выполнение потоков? Или мне нужно определить класс ServerCommunication
как Singleton?
Статический класс getData () выполняется несколько раз, когдавызов из фоновой очереди
# Edit1 Еще несколько объяснений
Эта проблема возникла, когда я пытаюсь открыть определенный viewController
при получении push-уведомления.Я использую стороннюю библиотеку под названием FAPanelController , которая принимает центральный, левый и правый viewController соответственно.
Пример кода:
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
//Now I want to open a viewController
if let panel = self.window?.rootViewController as? FAPanelController
{
let centerNavVC = storyboard.instantiateViewController(withIdentifier: "HomeViewController") as! UINavigationController
let vc = centerNavVC.topViewController as! HomeViewController
panel.center(centerNavVC, afterThat: {
//HomeViewController has a method populateData() in viewWillAppear()
})
}
}