p
u
b
l
i
c
i
t
é
publicité

Discussion: Delegate devient null

  1. #1
    Membre confirmé Avatar de Fooshi
    Homme Profil pro
    Inscrit en
    juin 2002
    Messages
    456
    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 : 456
    Points : 235
    Points
    235

    Par défaut Delegate devient null

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Expert iOS
    Inscrit en
    juin 2005
    Messages
    396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Expert iOS

    Informations forums :
    Inscription : juin 2005
    Messages : 396
    Points : 1 407
    Points
    1 407

    Par défaut

    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é.

  3. #3
    Expert Confirmé
    Homme Profil pro
    Inscrit en
    septembre 2006
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : septembre 2006
    Messages : 2 401
    Points : 3 158
    Points
    3 158

    Par défaut

    Plus que probablement 2 instances de CriteriaViewController sont créées :
    faites un NSLog de self dans initWithDelegate et viewDidLoad pour vous en convaincre.

  4. #4
    Membre confirmé Avatar de Fooshi
    Homme Profil pro
    Inscrit en
    juin 2002
    Messages
    456
    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 : 456
    Points : 235
    Points
    235

    Par défaut

    @chiv :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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é.

  5. #5
    Expert Confirmé
    Homme Profil pro
    Inscrit en
    septembre 2006
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : septembre 2006
    Messages : 2 401
    Points : 3 158
    Points
    3 158

    Par défaut

    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.

  6. #6
    Membre confirmé Avatar de Fooshi
    Homme Profil pro
    Inscrit en
    juin 2002
    Messages
    456
    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 : 456
    Points : 235
    Points
    235

    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : 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
    -(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;
    }

Discussions similaires

  1. Réponses: 15
    Dernier message: 16/01/2009, 09h50
  2. ThreadLocal devient null dans mon application Web
    Par enjoy dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 12/02/2008, 16h32
  3. PROBLEME AVEC LES REQUETES IS NULL / NOT EXISTS
    Par sylvaine dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/06/2004, 13h26
  4. [VB6] [BDD] Recordset et champ égal à Null
    Par Gr|ppen dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/03/2003, 10h00
  5. "ALTERER" une col. NULL en NOT NULL - Int
    Par Gandalf24 dans le forum SQL
    Réponses: 2
    Dernier message: 28/12/2002, 00h07

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