Quelle est la différence entre les deux? Si j'écris un programme, quand aurais-je besoin de ceci:
void aFunction() {
//do something
}
et quand aurais-je besoin de ceci:
-(void)aMethod {
//do something else
}
Quelle est la différence entre les deux? Si j'écris un programme, quand aurais-je besoin de ceci:
void aFunction() {
//do something
}
et quand aurais-je besoin de ceci:
-(void)aMethod {
//do something else
}
En fait, l'Objective-C méthode est une fonction C avec deux arguments toujours présent au début.
Ce:
-(void)aMethod;
Est exactement équivalent à ceci:
void function(id self, SEL _cmd);
Objective-C de messagerie est telle que cela:
[someObject aMethod];
Est exactement l'équivalent de ce (presque -- il y a un variadic argument ABI question au-delà de la portée de cette réponse):
objc_msgSend(someObject, @selector(aMethod));
objc_msgSend() trouve la bonne mise en œuvre de la méthode (en regardant sur someObject
), puis, par la magie d'une queue d'appel d'optimisation, sauts à la mise en œuvre de la méthode qui, à toutes fins et intentions, fonctionne exactement comme un appel de fonction C qui ressemble à ceci:
function(someObject, @selector(aMethod));
Littéralement, Objective-C a été initialement mis en œuvre en tant que rien, mais un préprocesseur C. Tout ce que vous pouvez faire en Objective-C pourrait être réécrit de la manière rectiligne C.
Ce faisant, toutefois, serait une douleur dans le cul et n'en vaut pas votre temps, au-delà de l'incroyable expérience éducative de le faire.
En général, vous devez utiliser Objective-C méthodes lorsque l'on parle à objets et de la fonction lorsque vous travaillez avec des droites C goop. Étant donné que pratiquement tous de Mac OS X et iOS fournir de l'Objective-C Api -- certainement pas du tout pour l'INTERFACE de programmation au niveau des points d'entrée -- puis vous utilisez l'Obj-C la plupart du temps.
Même lors de l'écriture de votre propre modèle de code de niveau, ce qui est relativement autonome, vous serez généralement utiliser Objective-C tout simplement parce qu'il offre un très naturelle de la colle entre les données et fonctionnalités, il est primordial de locataire de la programmation orientée objet.
En Objective-C chaque fonction opère sur un objet, comme
[myObject myFunction]
Un C méthode est de la forme:
return-type function-name(argument1, argument2, etc) {}
Objective-C exemple de la méthode est de la forme:
-(return-type)function-name:argument1 {}
ou pour un multi-fonction d'argument
-(return-type)function-name:argument1 function-name:argument2 {}
J'ai toujours utiliser Objective-C-style méthodes en Obj-C programmation, même si vous pouvez toujours utiliser C-type de fonctions.
Je suppose que l'équivalent en C [myObject myMethod:arg]
pourrait être myObject.myMethod(arg)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.