Recherche explication : abstract class

aranaudaranaud Membre
09:45 modifié dans API AppKit #1
J'appelle une méthode dans une classe NSArrayController et dans le Debugger, il m'envoie comme erreur :

Exception raised during posting of notification.  Ignored.  exception: *** -count only defined for abstract class.  Define -[NSMutableArray count]!
Timed out fetching data. Variable display may be inaccurate.
*** -count only defined for abstract class.  Define -[NSMutableArray count]!

J'aimerai avoir quelques explications de ce qu'est une classe abstraite  ainsi que s'est éventuel limitation d'emploi.

Réponses

  • BaardeBaarde Membre
    décembre 2004 modifié #2
    Une classe abstraite est une classe dont l'implémentation d'une ou plusieurs méthodes (voir toutes) n'est pas fournie. Ces méthodes sont implémentées dans les sous-classes. Une classe abstraite ne peut pas être instanciée.
    Je crois que NSMutableArray est une classe abstraite. Quand tu demandes de créer une NSMutableArray c'est une sous-classe qui est retournée.
  • aranaudaranaud Membre
    09:45 modifié #3
    Donc, si j'ai bien compris, toutes les classes sont des classes abstraite.
  • BaardeBaarde Membre
    09:45 modifié #4
    Pas toutes mais plusieurs classes de Foundation (ce qui pose problème pour les sous-classer puisqu'il faut implémenter les méthodes manquantes)
    Peut-on savoir quelle est la méthode appelée ?
  • aranaudaranaud Membre
    janvier 2005 modifié #5
    Dans une sous classe de NSArrayController (dans une classe perso)

    NSString *choix = [[[NSString alloc] initWithString:[[searchString componentsSeparatedByString:@", "] objectAtIndex:0]] autorelease];
    


    Le problème se pose seulement lorsque que je veut contrôler la valeur avec le Debugger.

    Il y a une valeur correcte dans la variable "searchString" mais aucune valeur dans la variable choix. De plus, le type de la variable choix est modifié pour devenir NSPlaceholderString. :crackboom:-

    Nota : en utilisant

    <br />NSLog(&quot;la valeur de choix : %@.&#092;n&quot;,choix);<br />NSLog(&quot;la valeur de searchString : %@.&#092;n&quot;, searchString);<br />
    


    J'ai les bonnes valeurs qui s'affiche dans la console. B)
  • ClicCoolClicCool Membre
    09:45 modifié #6
    Salut,

    Dans quel contexte et quelle méthode de controller s'exécute le code que tu nous donnes ?

    dans 1104604215:

    NSString *choix = [[[NSString alloc] initWithString:[[searchString componentsSeparatedByString:@&quot;, &quot;] objectAtIndex:0]] autorelease];
    



    Ici il y a un blème :(
    Tu cherches à  initialiser une string en lui adressant un NSArray (renvoyé par componentsSeparatedByString) >:)

    dans 1104604215:

    Le problème se pose seulement lorsque que je veut contrôler la valeur avec le Debugger.

    Il y a une valeur correcte dans la variable "searchString" mais aucune valeur dans la variable choix. De plus, le type de la variable choix est modifié pour devenir NSPlaceholderString.  :crackboom:-


    Le NSPlaceholder est probablement renvoyé pour "remplacer" une absence de valeur ou une valeur multiple (peut-être celà  vient-il justement de ce que tu tentes de transmettre un NSArray pour inititialiser ta variable ? )
  • BaardeBaarde Membre
    09:45 modifié #7
    dans 1104855097:

    dans 1104604215:

    NSString *choix = [[[NSString alloc] initWithString:[[searchString componentsSeparatedByString:@&quot;, &quot;] objectAtIndex:0]] autorelease];
    



    Ici il y a un blème :(
    Tu cherches à  initialiser une string en lui adressant un NSArray (renvoyé par componentsSeparatedByString) >:)

    [[searchString componentsSeparatedByString:@, ] objectAtIndex:0] n'est-il pas une NSString ?
  • ClicCoolClicCool Membre
    09:45 modifié #8
    dans 1104864106:

    dans 1104855097:

    dans 1104604215:

    NSString *choix = [[[NSString alloc] initWithString:[[searchString componentsSeparatedByString:@&quot;, &quot;] objectAtIndex:0]] autorelease];
    



    Ici il y a un blème :(
    Tu cherches à  initialiser une string en lui adressant un NSArray (renvoyé par componentsSeparatedByString) >:)

    [[searchString componentsSeparatedByString:@, ] objectAtIndex:0] n'est-il pas une NSString ?


    oups  ???
    en effet, ça m'apprendra a poster le jour du pastis
    J'ai manqué d'attention dans la lecture :)beta:

    Si ta searchString n'est pas vide tu récupère bien la première chaine.

    Y a-t-il certaine conditions où tu rencontre ton pb où cela se passe-t-il quelque soit le contenu de la searchString ?
  • aranaudaranaud Membre
    09:45 modifié #9
    dans 1104912007:

    Y a-t-il certaine conditions où tu rencontre ton pb où cela se passe-t-il quelque soit le contenu de la searchString ?


    Quelque soit la valeur de searchString (pour info, la chaà®ne est de type "nom1, nom2" et je récupère le "nom1"). La fonction n'est pas appelé si searchString n'est pas valide
    if (searchString != nil) {<br />NSString *choix = [[[NSString alloc] initWithString:[[searchString componentsSeparatedByString:@&quot;, &quot;] objectAtIndex:0]] autorelease]; <br /> ... <br />}
    
    .

    Mais pourquoi le problème ne se pose que dans le débuguer et pas dans une utilisation normale.
Connectez-vous ou Inscrivez-vous pour répondre.