web-dev-qa-db-fra.com

Puis-je surcharger un opérateur dans Objective-C?

Est-il possible de remplacer l'utilisation de l'opérateur dans Objective-C?

Par exemple

myClassInstance + myClassInstance

appelle une fonction personnalisée pour ajouter les deux.

55
123hal321

La surcharge de l'opérateur n'est pas une caractéristique d'Objective-C. Si deux instances de vos classes peuvent être ajoutées ensemble, fournissez une méthode et autorisez leur ajout à l'aide de cette méthode:

Thing *result = [thingOne thingByAddingThing:thingTwo];

Ou, si votre classe est modifiable:

[thingOne addThing:thingTwo];
90
dreamlax

Non, vous ne pouvez pas faire cela dans Objective-C.

16
Vadim Shender

Vous pouvez le faire maintenant dans Swift , un successeur de objC. Et puisque Objective-C et Swift sont faits pour fonctionner ensemble This pourrait être intéressant pour vous.

7
Damiaan Dufaux

Vous souhaiterez peut-être prendre en charge la souscription de votre objet. L'indexation est pas une surcharge d'opérateur, mais elle peut être pratique pour un objet de collection. NSArray et NSDictionary prennent tous deux en charge la souscription. Par exemple:

NSMutableArray *a = [NSMutableArray new]; a[0] = @"Hello";

La façon de prendre en charge l'indexation d'index consiste à implémenter les éléments suivants:

-(id)objectAtIndexedSubscript:(NSUInteger)idx; -(void)setObject:(id)newObject atIndexedSubscript:(NSUInteger)idx];

3
jack

Non, Objective-C ne prend pas en charge la surcharge des opérateurs.

0
DURGESH