Objective-C Language id


Exemple

id est le pointeur d'objet générique, un type Objective-C représentant "n'importe quel objet". Une instance de toute classe Objective-C peut être stockée dans une variable id . Un id et tout autre type de classe peuvent être assignés sans conversion:

id anonymousSurname = @"Doe";
NSString * surname = anonymousSurname;
id anonymousFullName = [NSString stringWithFormat:@"%@, John", surname];

Cela devient pertinent lors de la récupération d'objets à partir d'une collection. Les types de retour des méthodes comme objectAtIndex: sont id pour exactement cette raison.

DataRecord * record = [records objectAtIndex:anIndex];  

Cela signifie également qu'une méthode ou un paramètre de fonction saisi comme id peut accepter n'importe quel objet.

Lorsqu'un objet est saisi en tant id , tout message connu peut lui être transmis: la méthode dispatch ne dépend pas du type de compilation.

NSString * extinctBirdMaybe = 
               [anonymousSurname stringByAppendingString:anonymousSurname];

Un message auquel l'objet ne répond pas réellement provoquera une exception à l'exécution, bien sûr.

NSDate * nope = [anonymousSurname addTimeInterval:10];
// Raises "Does not respond to selector" exception

Protéger contre les exceptions.

NSDate * nope;
if([anonymousSurname isKindOfClass:[NSDate class]]){
    nope = [anonymousSurname addTimeInterval:10];
}

Le type d' id est défini dans objc.h

typedef struct objc_object {
    Class isa;
} *id;