Maison > Questions et réponses > le corps du texte
如题,Objective-C无私有方法是什么意思?确实我在.h文件中声明的所有方法除了静态方法就是public方法,但是我再.m文件中随便声明的方法,子类是看不到的,当然performselector还是可以执行的,但是这样算不算是一种私有方法呢?
PHPz2017-04-22 09:01:28
Il est recommandé de jeter un œil à http://blog.sunnyxx.com/2014/04/13/objc_dig_interface/
PHP中文网2017-04-22 09:01:28
obj c n'a pas de méthodes privées strictes. Ceci est déterminé par son mécanisme d'appel de méthode. Appeler une méthode d'un objet dans obj c envoie en fait un message à l'objet, et l'objet verra s'il peut le gérer. Si ce message peut être traité, la méthode correspondante sera appelée pour l'implémenter. S'il ne peut pas être traité, une exception sera levée. Il s'agit entièrement d'une action d'exécution. Ainsi, même si une méthode n'est pas déclarée dans le fichier d'en-tête, elle peut toujours être appelée au moment de l'exécution, et ce n'est pas différent si vous l'aviez déclarée dans le fichier d'en-tête. Tout au plus, Xcode vous donnera un avertissement.
Il en va de même pour les méthodes statiques, car une classe elle-même est aussi un objet. Appeler une méthode statique signifie envoyer un message à cet objet.
Les méthodes dites privées (non définies dans le fichier d'en-tête), je pense personnellement, sont plutôt une contrainte que les programmeurs s'imposent. Par exemple, si elles ne sont pas placées dans le fichier d'en-tête, cela signifie qu'elles ne le sont pas. exposé. C'est tout. La méthode ne devrait pas être appelée de l'extérieur, même si vous pouvez toujours l'utiliser si vous le souhaitez.
Référez-vous à cet article qui est très détaillé et clair : http://blog.jobbole.com/45963/
怪我咯2017-04-22 09:01:28
Oui, les catégories et extensions dans l'interface sont équivalentes aux méthodes privées.
Catégorie : nom de la classe + méthode d'extension ; extension : @zone d'implémentation
Vous pouvez le rechercher.
PHP中文网2017-04-22 09:01:28
Toutes les méthodes déclarées en .h sont publiques par défaut.
Si vous souhaitez qu'il soit privé, il n'est pas nécessaire de le déclarer en .h, il suffit de l'implémenter directement en .m. Il est recommandé que toutes les méthodes privées commencent par p_, ex :
- (vide) p_myFirstMethod
{
//à faire..
>