J'essaie de passer un pointeur par référence à un objet de la classe A à la classe B. Dans la classe B, je veux assigner ce pointeur à un ivar et le lire et écrire dessus.Passer un pointeur par référence à la classe et l'utiliser
Ceci est le code qui me donne des erreurs (peu importe quelles erreurs). C'est mon premier essai avec des pointeurs alors s'il vous plaît corriger ma compréhension.
Class A
//This is the parameter I would like to pass as a pointer and be able to manipulate from class B
NSString *name = @"Cyprian";
-(void)passAParameter{
ClassB *classB = [[ClassB alloc] initWithAPointer:&name];
...
}
Class B
// ClassB.h
@interface ClassB{
NSString **nameFromClassA;
}
@property(nonatomic,assign)NSString **nameFromClassA;
-(id)initWithAPointer:(NSString **)name;
// ClassB.m
@implementation ClassB
@synthesize nameFromClassA;
-(id)initWithAPointer:(NSString **)name{
*nameFromClassA = *name;
}
//Print the name
-(void)printName{
NSLog(@"Name: %@", *nameFromClassA);
}
//Will this change the name in class A?
-(void)changeNameInClassA:(NSString* newName){
*nameFromClassA = newName;
}
Eh bien, je suppose que je ne me suis pas rendu suffisamment clair. Je veux passer une valeur par référence donc j'utilise des doubles pointeurs sur le but. J'essaie de passer un nom par référence afin que je puisse le lire et lui écrire dans la classe B. – Cyprian
Si vous le passez comme je l'ai exposé ici, chaque changement de 'name' dans' ClassA' passera à ' nameFromClassA' dans 'ClassB', puisque vous utilisez naturellement un pointeur pour faire référence à cette chaîne. Vous initialisez 'ClassB' en utilisant le pointeur vers la mémoire qui" contient "la chaîne (en fait vous définissez la chaîne comme' NSString * name' et non 'NSString name'). – marzapower
S'il vous plaît, essayez-le et laissez-moi savoir si vous avez des difficultés. – marzapower