Différence entre @interface de définition .h et .m fichier
Normalement, nous utilisons des
@interface interface_name : parent_class <delegates>
{
......
}
@end
méthode .h fichier et dans .m fichier nous de synthèse des propriétés des variables déclarées dans .h fichier.
Mais dans certains code, ce @interface.....@end la méthode est gardé dans .m fichier aussi. Ça veut dire quoi? Quelle est la différence entre eux?
Également donner quelques mots sur les getters et setters pour le fichier d'interface qui est défini .m fichier...
Merci d'Avance
Vous devez vous connecter pour publier un commentaire.
Il est courant de mettre un supplément de
@interface
qui définit une catégorie contenant des méthodes privées:Personne.h:
Personne.m:
Le "privé de la catégorie" (le nom propre d'un nom de catégorie n'est pas privée de catégorie", c'est 'extension de classe') .m empêche le compilateur d'avertissement que les méthodes sont définies. Cependant, parce que la
@interface
dans le .m fichier est une catégorie vous ne pouvez pas définir ivars en elle.Mise à jour 6 Août '12: Objective-C a évolué depuis cette réponse a été écrit:
ivars
peut être déclarée dans une classe de l'extension (et toujours peut - être la réponse était incorrecte)@synthesize
n'est pas nécessaireivars
peuvent maintenant être déclarées dans des accolades en haut de@implementation
:qui est,
@interface Person ()
suffira.class extension
pas uncategory
@interface Person ()
et@end
dans le.m
fichier. Par exemple, je suis en mesure de simplement écrire-(void)startThinkOfWhatToHaveForDinner{}
dans la mise en œuvre et sortir avec elle. Est-ce quelque chose de nouveau avec iOS6, ou ai-je raté quelque chose?@interface className ()
) sera généralement ne contiennent privé@property
s.interface
deimplementation
dans.m
est identique?vous pouvez même créer d'autres classes .m de fichier,
par exemple d'autres petites classes qui héritent de la classe déclarée dans .h fichier mais avoir quelques légères différences de comportement.
Vous pouvez l'utiliser dans un modèle de fabrique