2009-05-27 2 views
4

Affiche de première fois alors s'il vous plaît soyez doux.Référencement d'une méthode dans l'objet courant

Comment référencer une méthode dans l'objet courant dans Objective-C? Y at-il quelque chose comme en Java, le ce mot-clé?

Voici un code faux pour clarifier:

@implementation FooBard 
- (void) foo { 
    i = 1 
    m = [this bar: i]; 
} 

- (int) bar: int j { 
    k = j - 1; 
    return (k); 
} 
@end 

En Java je voudrais juste faire this.bar() et être fait avec elle.

Merci pour le temps.

Bill

Répondre

4
m = [self bar:i]; 
+0

qui fonctionne. Je vous remercie. – bkoch

+0

Court et doux comme il était ;-) – Abizern

2

Toutes les méthodes Objective-C obtenir un paramètre implicite appelé self qui est une variable de pile de type id qui pointe vers l'instance actuelle. En fait, toute fonction C peut être utilisée comme méthode Objective-C si ses deux premiers paramètres sont de type id et SEL (voir ci-dessous).

self n'est pas un mot clé réservé dans Objective-C comme this en Java. Vous pouvez, par exemple, réaffecter self dans la méthode. Ceci est un modèle standard init méthodes:

-(id)init { 
    if((self = [super init])) { 
    // do initialization here 
    } 

    return self; 
} 

mais réaffectant self est rarement utilisé dans un autre contexte. Vous pouvez utiliser self comme toute autre variable de type id: [self bar:i] dans l'exemple fourni. Par souci d'exhaustivité, toutes les méthodes Objective-C obtiennent également un paramètre d'implicite appelé _cmd qui est le sélecteur (type SEL) de la méthode appelée. Voir le Objetive-C Runtime Reference pour plus d'informations.

+0

_cmd est un bon à utiliser dans les déclarations NSLog. comme NSLog (@ "% s: mon message et objet:% @", _cmd, myObject); – Abizern

Questions connexes