Une vue de mon application iOS est un UISearchDisplay. Je l'ai conçu comme une recherche en amont, de sorte qu'à chaque fois que l'utilisateur saisit un nouveau caractère, la table se remplit à nouveau. Pour ce faire, j'ai implémenté la méthode du protocole UISearchDisplayDelegate :
searchDisplayController:shouldReloadTableForSearchString:
Dans cette méthode, je prends la chaîne fournie et je l'ajoute à mon URL de requête. Je crée ensuite une nouvelle connexion NSURLConnection et soumets une nouvelle requête asynchrone. Je reçois et ajoute des données via la méthode delegate :
connection:didReceiveData:
Une fois que la connexion a terminé le téléchargement des données, via la méthode :
connectionDidFinishLoading
Je passe les données à une instance de NSXMLParser. Les données reçues sont un fichier XML de tous les contacts de ma base de données qui correspondent à la chaîne donnée. Une fois les données analysées, je recharge la table.
Mon problème : Si l'utilisateur tape un texte assez rapidement, plusieurs tâches de connexion et d'analyse seront exécutées en même temps. C'est un problème parce que j'ai une instance de NSMutableData à laquelle j'ajoute des données et que j'analyse. J'espère que vous voyez où je veux en venir.
Quelqu'un a-t-il des suggestions pour améliorer ma mise en œuvre et/ou résoudre ce problème de section critique ?