Comme certaines personnes l'ont souligné, elles sont liées à des pointeurs. Il y a toute une mine d'informations à ce sujet, cependant, si vous êtes nouveau, vous pourriez trouver cela un peu déroutant.
Pour signaler ce que vous devez savoir ...
La plupart du temps, vous avez une entrée et une sortie à une fonction.
- (int)roundMyFloat:(float)float;
Ici, l'entrée est un flottant et la sortie est un int.
Parfois, vous aurez besoin de plus d'une sortie pour une méthode. Une situation courante est l'endroit où vous pourriez vouloir retourner un code d'erreur ainsi qu'un paramètre de succès.
- (BOOL)doSomthing:(NSError**)error;
Vous utiliseriez cela comme si ...
NSError* error = nil;
BOOL sucess = [myInstance doSomething:&error];
if (!sucess)
{
NSLog(@"Error: %@", error);
}
Vous passez la error
en tant que 'sortie paramter'. Le code pour doSomthing
prendra votre erreur et la remplira avec des informations si nécessaire.
Vous devez déclarer le paramètre d'erreur avec deux *
« s dans la déclaration de méthode (NSError**)
parce que vous dites que vous voulez un pointeur vers un objet d'erreur et un objet d'erreur est en fait un pointeur lui-même - de sorte que son un pointeur vers un pointeur .
Lorsque vous transmettez l'erreur dans la méthode [myInstance doSomething:&error];
, vous utilisez le symbole &
pour indiquer 'prendre l'adresse mémoire de mon objet d'erreur'. Dans votre exemple, red
green
et blue
sont des paramètres de sortie. La méthode didRequestColorComponentsForRed
modifie les valeurs que vous lui transmettez.Contrairement à l'exemple NSError
, red
green
et blue
ne sont pas des objets, ils n'ont donc besoin que d'une étoile dans la déclaration de méthode. Ceci dit 'accepter un pointeur vers une valeur CGFloat
en tant que paramètre'. Lorsque vous invoquez la méthode didRequestColorComponentsForRed
, vous transmettez les composants de couleur en utilisant le symbole &
comme dans l'exemple NSError. Cela dit, prenez l'adresse mémoire de ma valeur CGFloat
et transmettez-la à la fonction.
Ne vous inquiétez pas trop de la syntaxe &
et *
pour l'instant - rappelez-vous ce que c'est pour (paramètres de sortie). Vous devriez finalement lire à ce sujet pour y arriver (c'est plutôt cool en fait!).
Espérons que cela aide - et n'ayez pas peur de poser des questions.
Lire du matériel sur Pointer en C ou C++. – CRDave
Ummm ... «pointeurs»? – sgarizvi
& est l'adresse-de l'opérateur, * déclare une variable comme un pointeur, ou en dérives un déjà déclaré http://www.cplusplus.com/doc/tutorial/pointers/ –