我有一个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个或更多联系人的组而不会崩溃的地方,但是我不确定。有人有什么建议吗?