2010-11-29 26 views
0

J'essaye de déboguer mon application iphone, elle utilise des sélecteurs comme paramètre-méthode "didFinishSelector:" Quand je fais un pas sur ma méthode ou que je rentre dans xcode, elle passe en revue ma méthode en avant. Quelque temps plus tard, ma méthode finit son travail, et .. il doit aller dans ma fonction de sélection et je veux le voir dans Xcode.Débogage des sélecteurs dans Xcode

Comment ce mécanisme de signal est-il conçu? Quelque chose comme des forks C classiques ou bien des multi-threads? Est-il possible de le voir pendant le débogage visuel? Si oui, alors comment?

+0

Je pense que vous devez nous montrer quel code vous avez jusqu'ici. Je ne comprends pas vraiment ce que vous demandez. – JeremyP

Répondre

0
//create and authenticate to a google spreadsheet service 
    GDataServiceGoogleSpreadsheet *service = [ self spreadsheetService ]; 
    NSURL *feedURL = [ NSURL URLWithString: kGDataGoogleSpreadsheetsPrivateFullFeed ]; 

    //check autentication success (invoke "googleTicket" method for debug success & error) 
    [ service authenticateWithDelegate: self 
       didAuthenticateSelector: @selector(googleTicket: authenticatedWithError:) ]; 

    //fetch retrieves the feed of spreadsheets entries 
    GDataServiceTicket *ticket; 
    ticket = [ service fetchFeedWithURL: feedURL 
           delegate: self 
        didFinishSelector: @selector(spreadsheetsTicket: finishedWithFeed: error:) ]; 

Voici un exemple. Quand je débogue, j'appelle step-over, step-over, le débogueur passe par la méthode [service authenticateWithDelage: didAuthenticateSelector:], il va directement à [service fetchFeedWithURL: delegate: didFinishSelector:] et après cela il avance. Mais je veux voir, quand ces deux méthodes se terminent, et je veux voir comment il va dans mes sélecteurs "googleTicket: authenticateWithError" et "spreadsheetsTicket: finishedWithFeed: erreur:"

+0

J'ai trouvé un seul moyen d'entrer dans le code du sélecteur avec le débogueur: j'ai mis un point d'arrêt à une ligne dans le code de la méthode de sélection. Aller avec le débogueur à travers toutes les étapes à la fin du programme, quand "étape" ne va nulle part, puis j'appuie sur "continuer" et le débogueur va au point d'arrêt à l'intérieur de mon sélecteur. Ce n'est pas confortable de déboguer comme ça, le processus n'est pas linéaire. Je veux comprendre comment fonctionnent ces sélecteurs d'objectifs-c et comment il est préférable de les déboguer. – zkaje

+0

Cela n'a rien à voir avec les sélecteurs. Les méthodes que vous appelez sur le service GData sont asynchrones. Donc ils ne sont pas linéaires. Ces connexions réseau se produisent sur un thread différent et lorsque vous avez terminé, vos méthodes sont planifiées sur le thread principal. Donc, vous faites la bonne chose en définissant simplement des points d'arrêt dans ces méthodes. –

+0

Hm .. donc, en fonction de l'une ou l'autre méthode est synchrone ou non, le débogueur doit soit aller dans le sélecteur ou non? – zkaje