2010-04-19 6 views
2

J'ai des difficultés à afficher des données dans un UITextView dans la programmation iPhone. J'analyse les données audio entrantes (à partir du microphone). Pour ce faire, je crée un objet "analyseur" à partir de ma classe SignalAnalyzer qui effectue l'analyse des données entrantes. Ce que je voudrais faire est d'afficher chaque nouvelle donnée entrante dans un TextView en temps réel.Objectif C - Affichage des données dans UITextView

Donc quand j'appuie sur un bouton, je crée l'objet "analyseur" qui analyse les données entrantes. Chaque fois qu'il y a de nouvelles données, je dois l'afficher sur l'écran dans un TextView. Mon problème est que j'obtiens une erreur parce que (je pense) j'essaie d'envoyer un message à la classe parente (celle qui s'occupe de l'affichage des choses dans mon UITextView: elle a une variable d'instance UITexView liée dans Interface Builder). Que dois-je faire pour indiquer à mes parents ce qu'ils doivent afficher? Ou comment devrais-je concevoir mes classes pour afficher automatiquement quelque chose?

Nous vous remercions de votre aide.

PS: Voici mon erreur:

2010-04-19 14:59:39.360 MyApp[1421:5003] void WebThreadLockFromAnyThread(), 
0x14a890: Obtaining the web lock from a thread other than the main thread 
or the web thread. UIKit should not be called from a secondary thread. 

    2010-04-19 14:59:39.369 MyApp[1421:5003] bool _WebTryThreadLock(bool), 
0x14a890: Tried to obtain the web lock from a thread other than the main thread 
or the web thread. This may be a result of calling to UIKit from a secondary thread. 
Crashing now... 

    Program received signal: “EXC_BAD_ACCESS”. 

Répondre

5

Il semble que votre problème est que vous essayez de mettre à jour l'interface utilisateur à partir d'un thread secondaire, que vous n'êtes pas autorisé à le faire. Regardez en utilisant performSelectorOnMainThread: pour faire vos mises à jour de l'interface utilisateur.

+0

Merci, je ne savais pas. J'ai juste essayé et ça a fonctionné parfaitement !! Je vous remercie ! – leochab