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

Développement OS X Discussion :

Visibilité des classes dans la procedure performDefaultImplementation


Sujet :

Développement OS X

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Août 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2013
    Messages : 2
    Par défaut Visibilité des classes dans la procedure performDefaultImplementation
    Hello,

    I have written an application running under Mac OsX 10.8 and now I want to drive this app through Apple Script

    I have validated my app as scriptable and constructed the suite within a.sdef file, and when I send a command through appleScript editor, I reach the right class (for me SolarMaxAppleEvent class) and process performDefaultImplementation method, which returns a NSString.

    This class has been intanciated by my app which fills in an array (NSMutableArray * AppleEventUpsArray) of Dictionaries (NSMutableDictionary * appleEventUpsDict) which I want to use in AppleScript Answer.

    In order to fill in this string, I need to acces to this AppleEventUpsArray property in performDefaultImplementation method.

    But running inside this method (with debug) it seems, that I cannot access to the same instance than in the app.

    How can I access within performDefaultImplementation method to the properties of this class?

    Sample code follows:



    file: SolarMaxAppleEvent.h

    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
    @interface SolarMaxAppleEvent : NSScriptCommand {
    
    @public  NSMutableArray *AppleEventUpsArray;
    
    @public  NSMutableDictionary *appleEventUpsDict;
    
    }
    
    - (id)performDefaultImplementation;
    
    @property (nonatomic, retain) NSMutableArray *AppleEventUpsArray;
    
    @property (nonatomic, retain) NSMutableDictionary *appleEventUpsDict;
    
    @end




    file: SolarMaxAppleEvent.m

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    @implementation SolarMaxAppleEvent
    
    @synthesize AppleEventUpsArray;
    
    @synthesize appleEventUpsDict;
    
    - (id)init  {
    
        int i;
    
      if (self = [super init]) {
    
        //    NSLog(@"SolarMaxAppleEvent init ");
    
          self.AppleEventUpsArray = [[NSMutableArray alloc] init];
    
            for (i=0 ; i< 3 ; i++) {
    
                appleEventDict = [[NSMutableDictionary alloc] init];
    
                appleEventDict = [NSMutableDictionary dictionaryWithObjectsAndKeys:
    
                    [NSDate date], @"Date", [NSNumber numberWithInteger: 0 ], @"numPort",
    
                    [NSNumber numberWithInteger: 0 ],@"UAC" ,
    
                    [NSNumber numberWithInteger: 0 ],@"PAC" ,
    
                    [NSNumber numberWithInteger: 0 ],@"Temp",
    
                    [NSNumber numberWithInteger: 0 ],@"UDC" ,nil ];
    
                [self.AppleEventUpsArray addObject: appleEventDict];
    
                [appleEventDict release];
    
              }
    
            NSLog(@"SolarMaxAppleEvent init AppleEventUpsArray : %@ ",AppleEventUpsArray);
    
    // at this point This AppleEventUpsArray is correctly filled with 3 objects
    
        }
    
        return self;
    
    }
    
     
    
     
    
    - (id) performDefaultImplementation {
    
        id currentEventArray;
    
     
    
        NSDictionary * theArguments = [self evaluatedArguments];
    
        NSString *theResult;
    
        SLOG(@"CommandWithArgs performDefaultImplementation");
    
       
    
        /* report the parameters */
    
        SLOG(@"The direct parameter is: '%@'", [self directParameter]);
    
        SLOG(@"The other parameters are: '%@'", theArguments); // I clearly see this Log within console wiyh the rignt arguments
    
      
    
            currentEventArray = self.AppleEventUpsArray; 
    
            theResult = [NSString stringWithFormat:@"'%@'", [self.currentEventArray count]]; 
    
    // which returns 0 intead of 3 and debugger indicates that self.AppleEventUpsArray pointer is 0
    
            SLOG (@"Result Sent %@" ,theResult);
    
        return theResult;
    
    }
    // Question: How can I access to AppleEventUpsArray within performDefaultImplementation?

    Thanks for your help

  2. #2
    Modérateur

    Avatar de kOrt3x
    Homme Profil pro
    Technicien Informatique/Webmaster
    Inscrit en
    Septembre 2006
    Messages
    3 650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Informatique/Webmaster
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 650
    Par défaut
    Salut,

    Est-il possible d'avoir une version en français ?
    La rubrique Mac
    Les cours & tutoriels Mac
    Critiques de Livres Mac & iOS
    FAQ Mac & iOS

    ________________________________________________________________________
    QuickEvent : Prise de rendez-vous rapide pour iPhone/iPad et iPod Touch (AppStore)
    Mon Livre sur AppleScript : AppleScript: L'essentiel du langage et de ses applications

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Août 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2013
    Messages : 2
    Par défaut Visibilité des classes de l'application vue des procédures performDefaultImplementation d'appleScript
    Bonjour
    Je n'ai toujours pas réglé mon problème, et à la demande du forum, je l'écrit en français
    J'ai une application mac OS X (lion) qui récupère des données sur le réseau.
    J'ai rendu l'application scriptable et ai rédigé des procédures d'accès via apple script
    j'ai donc une classe SolarMaxAppleEvent dont le code header SolarMaxAppleEvent.h est ci-dessous
    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
    @interface SolarMaxAppleEvent : NSScriptCommand {
    
    @public  NSMutableArray *AppleEventUpsArray;
    
    @public  NSMutableDictionary *appleEventUpsDict;
    
    }
    
    - (id)performDefaultImplementation;
    
    @property (nonatomic, retain) NSMutableArray *AppleEventUpsArray;
    
    @property (nonatomic, retain) NSMutableDictionary *appleEventUpsDict;
    
    @end

    et le code d'exécution SolarMaxAppleEvent.m est ci-dessous
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    @implementation SolarMaxAppleEvent
    
    @synthesize AppleEventUpsArray;
    
    @synthesize appleEventUpsDict;
    
    - (id)init  {
    
        int i;
    
      if (self = [super init]) {
    
        //    NSLog(@"SolarMaxAppleEvent init ");
    
          self.AppleEventUpsArray = [[NSMutableArray alloc] init];
    
            for (i=0 ; i< 3 ; i++) {
    
                appleEventDict = [[NSMutableDictionary alloc] init];
    
                appleEventDict = [NSMutableDictionary dictionaryWithObjectsAndKeys:
    
                    [NSDate date], @"Date", [NSNumber numberWithInteger: 0 ], @"numPort",
    
                    [NSNumber numberWithInteger: 0 ],@"UAC" ,
    
                    [NSNumber numberWithInteger: 0 ],@"PAC" ,
    
                    [NSNumber numberWithInteger: 0 ],@"Temp",
    
                    [NSNumber numberWithInteger: 0 ],@"UDC" ,nil ];
    
                [self.AppleEventUpsArray addObject: appleEventDict];
    
                [appleEventDict release];
    
              }
    
            NSLog(@"SolarMaxAppleEvent init AppleEventUpsArray : %@ ",AppleEventUpsArray);
    
    // at this point This AppleEventUpsArray is correctly filled with 3 objects
    
        }
    
        return self;
    
    }
    
     
    
     
    
    - (id) performDefaultImplementation {
    
        id currentEventArray;
    
     
    
        NSDictionary * theArguments = [self evaluatedArguments];
    
        NSString *theResult;
    
        SLOG(@"CommandWithArgs performDefaultImplementation");
    
       
    
        /* report the parameters */
    
        SLOG(@"The direct parameter is: '%@'", [self directParameter]);
    
        SLOG(@"The other parameters are: '%@'", theArguments); // I clearly see this Log within console wiyh the rignt arguments
    
      
    
            currentEventArray = self.AppleEventUpsArray; 
    
            theResult = [NSString stringWithFormat:@"'%@'", [self.currentEventArray count]]; 
    
    // which returns 0 intead of 3 and debugger indicates that self.AppleEventUpsArray pointer is 0
    
            SLOG (@"Result Sent %@" ,theResult);
    
        return theResult;
    
    }
    Cette classe est en principe initialisée au démarrage de l'application.

    En revanche, lorsque j'appelle la procédure applescript le script entre bien dans la fonction performDefaultImplementation, mais les attributs et instances (AppleEventUpsArray, et appleEventUpsDict) de la classe sont des pointeurs nuls.
    Le script ne voit pas le pointeur d'instance initialisé par le logiciel.
    Que faut-il faire pour déclarer dans l'interface (*.sdef ou autre) de partager les données de l'application avec l'espace vu par applescript?
    Merci de votre aide

    guydelaciste

Discussions similaires

  1. [Débutant] inclure des .class dans le projet
    Par chadliii dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 16/02/2007, 00h01
  2. problème de visibilité des variables dans un include
    Par d1g-2-d1g dans le forum Langage
    Réponses: 6
    Dernier message: 28/11/2005, 09h35
  3. [EasyPHP] problème de visibilité des variable dans les includes
    Par d1g-2-d1g dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 23/10/2005, 01h55
  4. Réponses: 9
    Dernier message: 25/09/2005, 16h33
  5. Réponses: 2
    Dernier message: 13/10/2004, 15h32

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