IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Objective-C Discussion :

Problème de TableView (Mac Os X) [Objective-C]


Sujet :

Objective-C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7
    Par défaut Problème de TableView (Mac Os X)
    Bonsoir,
    Je débute en Objective C est me voilà planter avec un problème que je n'arrive pas a résoudre...concernant les TableView

    L'idée étant dans un TableView de 2 colonnes d'afficher:
    colonne1 : l'index d'un NSArray qui est la source de données
    colonne2 : Le contenu du NSArray

    Dans IB j'ai bien un NSArray qui a pour datasource et delegate ma classe MyDataController...

    Voici le code de ma classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    #import "MyDataController.h"
    @implementation MyDataController
     
    - (void)awakeFromNib {
    	test = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",nil];
    }
     
    - (int)numberOfRowsInTableView:(NSTableView *)tableView {
    	return [test count];
    }
     
    - (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row {
    	NSParameterAssert(row >= 0 && row < [test count]);
     
    	NSString *columnID = [ tableColumn identifier ];
    	id returnValue;
     
    	if ( [ columnID isEqualToString:@"colone1" ] ) {
    		returnValue = [NSString stringWithFormat:@"index %d:", row];
    	}
    	if ( [ columnID isEqualToString:@"colone2" ] ) {
    		returnValue = [test objectAtIndex:row];
    	}
    	return returnValue;
    }
     
    - (void)dealloc {
    	[super dealloc];
    }
    @end
    Le soucis est que dès que le TableView est rempli (oui il se rempli correctement), j'ai le message d'erreur :
    "EXC_BAD_ACCESS"....

    En fouillant un peu avec la variable d'environnement NSZombie j'obtient :
    "2010-09-27 21:06:37.969 SimpleTable[9847:a0f] *** -[CFArray count]: message sent to deallocated instance 0x139560"

    Je comprend bien qu'un message est envoyé à mon instance que n'existe plus mais je ne vois pas comment régler le problème :oops:

    Des idées ?!

    Bonne soirée...

  2. #2
    Membre émérite Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Par défaut
    test = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",nil];
    Les méthodes de classes (en opposition à méthode d'instance) comme celle ci renvoient un objet "autoreleasé". C'est-à-dire qu'il est créé puis ajouté dans la liste des objets à "releaser" prochainement. Et c'est exactement ce qui se passe avec ton -count sur un objet détruit.

    Donc partant de là, deux solutions. Soit tu passes par [[NSArray alloc] initWith...] soit tu utilises -retain après ton [NSArray arrayWith...]. Et bien entendu tu dois rajouter un -release correspondant dans la méthode -dealloc de ton data source.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7
    Par défaut
    Bonsoir,
    Merci beaucoup ça fonctionne nickel comme ça!
    Charge a moi de revoir mes tutos sur la gestion de la mémoire!
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème mémoire sur Mac
    Par Hydro999 dans le forum R
    Réponses: 0
    Dernier message: 01/08/2009, 00h55
  2. Problème Netbeans sous Mac OSX
    Par brotelle dans le forum NetBeans
    Réponses: 7
    Dernier message: 20/06/2008, 16h48
  3. parc mac pc : problème avec les mac
    Par olam37 dans le forum 4D
    Réponses: 2
    Dernier message: 17/03/2008, 17h20
  4. [MATERIEL] Problème avec un mac book
    Par Muesko dans le forum Apple
    Réponses: 3
    Dernier message: 10/01/2008, 13h19
  5. Problèmes NetBeans et Mac OSX (Intel)
    Par dfradet dans le forum NetBeans
    Réponses: 2
    Dernier message: 04/06/2007, 21h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo