我的解决方案中的线程有问题吗?

时间:2019-06-04 17:15:20

标签: xcode swift3 dispatch

我有一个Swift 3 App,该App实际上已在App Store上投入生产,但是我们发现了一个问题。此应用程序就像银行的社交网络,类似于Whatsapp,它具有一个选项,您可以在其中创建包含许多联系人的群组,但问题是:“如果您尝试创建包含15个联系人的群组或更多,该应用程序将冻结,并在几分钟后崩溃”

我正在尝试向创建组的类中添加一些“ DispatchQueue.main.async”,因为我认为该问题与线程的错误使用有关。在下面的代码中,我向您展示了如何创建组:

@IBOutlet弱var collectionViewContactos:UICollectionView!    @IBOutlet弱var tableViewContactos:UITableView! 让contactosSugeridos = 20

// MARK: - Variables
var nombreGrupo: String!
var imagenGrupo: UIImage?
var grupoCreado: Grupo?
var editarGrupo = false
var isCobroRapido = false
var contactos = [Contacto]()
var contactosSeleccionados = [Contacto]()
var contactosEncontrados = [Contacto]() 
var buscandoContactos: Bool = false

私人功能crearGrupo(){

    if self.contactosSeleccionados.count < 2 {
        let errorView = PPAlertView(view: self.navigationController!.view)
        errorView.mostrarConMensaje(NSLocalizedString("error_activityCrearGrupo_integrantesGrupo", comment: ""))

    } else {
        let hud = self.mostrarLoading(self.navigationController!.view)
        PeperApi.shareClient.agregarGrupo(nombreGrupo: self.nombreGrupo, completion: { (grupoID, error) in
            if let error = error {
                let errorView = PPAlertView(view: self.navigationController!.view)
                errorView.mostrarConMensaje(error.localizedDescription)

                hud?.dismiss()

            } else if let grupoID = grupoID {
                self.grupoCreado = Grupo()
                self.grupoCreado?.grupoID = grupoID
                self.grupoCreado?.nombre = self.nombreGrupo
                if let imagenGrupo = self.imagenGrupo {
                    PeperApi.shareClient.actualizarFotoGrupo(image: imagenGrupo, groupId: "\(grupoID)", completion: { (urlString, error) in

                        if let error = error {
                            let errorView = PPAlertView(view: self.navigationController!.view)
                            errorView.mostrarConMensaje(error.localizedDescription)
                            hud?.dismiss()

                        } else {

                            self.grupoCreado?.urlImagen = urlString
                            if let user = User.getUser(), let imagenPerfil = user.imageUrl {
                                PeperApi.shareClient.agregarAmigosAlGrupo(fotoPerfilOwner: imagenPerfil, grupoId: grupoID, contactos: self.contactosSeleccionados, completion: { (error) in
                                    if let error = error {
                                        let errorView = PPAlertView(view: self.navigationController!.view)
                                        errorView.mostrarConMensaje(error.localizedDescription)

                            } else {
                                PeperApi.shareClient.agregarAmigosAlGrupo(grupoId: grupoID, contactos: self.contactosSeleccionados, completion: { (error) in
                                    if let error = error {
                                        let errorView = PPAlertView(view: self.navigationController!.view)
                                        errorView.mostrarConMensaje(error.localizedDescription)

                                    } else {

                                        self.grupoCreado?.cantidadIntegrantes = self.contactosSeleccionados.count

                                    }
                                    hud?.dismiss()
                                })
                            }

                        }
                    })
                } else if let user = User.getUser(), let imagenPerfil = user.imageUrl {
                    PeperApi.shareClient.agregarAmigosAlGrupo(fotoPerfilOwner: imagenPerfil, grupoId: grupoID, contactos: self.contactosSeleccionados, completion: { (error) in
                        if let error = error {
                            let errorView = PPAlertView(view: self.navigationController!.view)
                            errorView.mostrarConMensaje(error.localizedDescription)


                } else {
                    PeperApi.shareClient.agregarAmigosAlGrupo(grupoId: grupoID, contactos: self.contactosSeleccionados, completion: { (error) in
                        if let error = error {
                            let errorView = PPAlertView(view: self.navigationController!.view)
                            errorView.mostrarConMensaje(error.localizedDescription)

                        }
                        hud?.dismiss()
                    })
                }
            }
        })
    }
}


private func agregarContactosGrupo() {
    if self.contactosSeleccionados.count > 0 {

        if let grupo = self.grupoCreado, let grupoID = grupo.grupoID {

// DispatchQueue.main.async {

            let hud = self.mostrarLoading(self.navigationController!.view)
            PeperApi.shareClient.agregarAmigosAlGrupo(grupoId: grupoID, contactos: self.contactosSeleccionados, completion: { (error) in
                if let error = error {
                    let errorView = PPAlertView(view: self.navigationController!.view)
                    errorView.mostrarConMensaje(error.localizedDescription)

                } else {
                    self.navigationController?.popViewController(animated: true)
                }
                hud?.dismiss()
            })
        }
    }
}

注释行:“ // DispatchQueue.main.async {”是我认为可以帮助创建具有15个或更多联系人的组而不会崩溃的地方,但是我不确定。有人有什么建议吗?

0 个答案:

没有答案