Précédent   Forum du club des développeurs et IT Pro > Systèmes > Mac > Objective-C
Objective-C Forum d'entraide sur le langage de programmation Objective-C
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 01/02/2013, 12h30   #1
Fooshi
Membre habitué
 
Avatar de Fooshi
 
Homme
Inscription : juin 2002
Messages : 387
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2002
Messages : 387
Points : 133
Points : 133
Par défaut Delegate devient null

Bonjour,
dans une classe j'ai un delegate definis comme ceci :

Code :
1
2
3
4
5
6
7
@interface CriteriaViewController : UIViewController <UIScrollViewDelegate, UISearchBarDelegate, UIPopoverControllerDelegate, AssetServiceDelegate, UITableViewDataSource, UITableViewDelegate> {
...
 id<CriteriaChangeDelegate> delegateCriteriaChange;
...
}

-(id)initWithDelegate:(id<CriteriaChangeDelegate>) delegate andFrame:(CGRect) frame;
A cet instant dans la fonction,

-(id) initWithDelegateid<CriteriaChangeDelegate>) delegate andFrameCGRect)frame{
...
delegateCriteriaChange = delegate;
...
}

delegateCriteriaChange n'est pas nul , mais plus bas dans la fonction viewDidLoad, delegateCriteriaChange devient NULL :


Code :
1
2
3
4
5
6
7
8
9
10
-(void) viewDidLoad{
    [super  viewDidLoad];
    NSArray * array = [[NSArray alloc] initWithObjects:@"Critères", @"Établissements", @"Type", @"Prix", @"Critères spéciaux",  nil];
    self.category   = array;
    [array  release];    
    
    
    
    NSLog(@"DELEG1 %@", delegateCriteriaChange);
}
je ne comprend pas pourquoi
Fooshi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2013, 12h41   #2
chiv
Rédacteur
 
Homme
Expert iOS
Inscription : juin 2005
Messages : 213
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Expert iOS

Informations forums :
Inscription : juin 2005
Messages : 213
Points : 684
Points : 684
Comment crée-tu l'objet delegate que tu passes en paramètre de ta méthode initWithDelegate ?

Il est peut-être autorelease ou appartient à un objet que tu détruis par la suite. Son retainCount doit rester > 0 mais il ne doit pas être retain par l'objet dont il est le délégué.
chiv est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 01/02/2013, 12h42   #3
JeitEmgie
Expert Confirmé
 
Homme
Inscription : septembre 2006
Messages : 2 375
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2006
Messages : 2 375
Points : 2 891
Points : 2 891
Plus que probablement 2 instances de CriteriaViewController sont créées :
faites un NSLog de self dans initWithDelegate et viewDidLoad pour vous en convaincre.
JeitEmgie est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/02/2013, 12h56   #4
Fooshi
Membre habitué
 
Avatar de Fooshi
 
Homme
Inscription : juin 2002
Messages : 387
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2002
Messages : 387
Points : 133
Points : 133
@chiv :

Code :
underC      = [[CriteriaViewController alloc]  initWithDelegate:self andFrame:CGRectMake(15, 0, self.view.frame.size.width, self.view.frame.size.height)];
Ma classe est initialisée comme ceci avec self en fait de la classe "splitViewController". Je n'ai pas compris cette histoire de retain désolé.

@ JeitEmgie :
les 2 traces dans chacune des fonctions donnent les même logs.

J'ai initialisé mon deuxième contrôleur dans viewWillAppear et non dans viewDidLoad pour avoir le delegué mais cela ne resoud pas mon probleme :

la table view de mon second controlleur n'est toujours pas affiché , la fonction cellForRowAtIndexPath ou numberOfRowsInSection n'est pas appelé.
Fooshi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2013, 13h11   #5
JeitEmgie
Expert Confirmé
 
Homme
Inscription : septembre 2006
Messages : 2 375
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2006
Messages : 2 375
Points : 2 891
Points : 2 891
Citation:
Envoyé par Fooshi Voir le message
@ JeitEmgie :
les 2 traces dans chacune des fonctions donnent les même logs.
montrez le code du NSLog que vous avez ajouté... histoire de vérifer que vous testiez bien ce que vous devez.
JeitEmgie est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2013, 14h04   #6
Fooshi
Membre habitué
 
Avatar de Fooshi
 
Homme
Inscription : juin 2002
Messages : 387
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2002
Messages : 387
Points : 133
Points : 133
Code :
1
2
3
4
5
6
7
8
9
-(void) viewDidLoad{
    [super  viewDidLoad];
    NSArray * array = [[NSArray alloc] initWithObjects:@"Critères", @"Établissements", @"Type", @"Prix", @"Critères spéciaux",  nil];
    self.category   = array;
    [array  release];
    
    NSLog(@"SELF2 %@", self);
    
}
et

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-(id) initWithDelegate:(id<CriteriaChangeDelegate>) delegate andFrame:(CGRect)frame{
    if ((self = [super init])){
        nonSelectedBtnColor = [UIColor whiteColor];
        selectedBtnColor = [SettingsService mainColor];
        self.view.frame = frame;
        firstAppearance = YES;
        garagePOIEnable = NO;
        displayPOI = YES;
        editable = YES;
        
        delegateCriteriaChange = delegate;
                
      ...
        NSLog(@"SELF1 %@", self);
    }
    return self;
}
Fooshi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h48.


 
 
 
 
Partenaires

Hébergement Web