All-Une bonne façon de créer des propriétés d'ami
Quelle est la bonne façon de définir les propriétés d'ami en Obj-C (mise en œuvre spécifique est Xcode pour IOS). Par propriétés d'ami, j'entends les attributs d'instance disponibles pour la classe de base, toutes les sous-classes de cette base, mais pas pour le public.
exemple:
@interface Base : NSObject
@property int friend
@end
@interface Sub : Base
@end
@implementation Base
@synthesize friend;
@end
@implementation Sub
-(id)newFriend
{
[self setFriend: [someOtherObject friend]]; // this should be allowed
}
@implementation Wow
-(void)
{
Sub* sub = [[Sub alloc] init];
[sub setFriend: [someOtherObject friend]]; // this should not be allowed
}
J'ai essayé de mettre l'ami @property pour base dans le fichier .m, mais Sub peut pas le voir. En C++ j'avais un déclarant auxiliaire appelé ami qui a fait exactement ce que je cherchais. Comment faire cela en Obj-C?
Merci
** Jetez un oeil à cet article: ** http://stackoverflow.com/questions/2241488/friend-classes-in-objective-c –
Minor nitpick: en C++, ce que vous décrivez est juste "protégé" ", pas ami". "ami" est nécessaire si l'ami n'est * pas * une sous-classe. Objective-C a @protected, mais c'est juste pour des variables d'instance, pas des méthodes (comme les mentions joerick ci-dessous). Les accesseurs de propriété ne sont que des méthodes. –