我可以在Objective-C中重载一个操作符吗?

是否可以重写在Objective-C中的运算符使用?

例如

myClassInstance + myClassInstance 

调用一个自定义函数来添加这两个。

运算符重载不是Objective-C的一个特性。 如果您的类的两个实例可以添加在一起,请提供一个方法并允许使用该方法添加它们:

 Thing *result = [thingOne thingByAddingThing:thingTwo]; 

或者,如果你的课是可变的,

 [thingOne addThing:thingTwo]; 

不,你不能在Objective-C中做到这一点。

你现在可以在Swift中inheritanceobjC。 而且由于Objective-C和Swift是一起工作的, 这可能对你很有意思。

您可能想要支持您的对象的下标。 下标不是运算符重载,但对于集合对象来说可能非常方便。 NSArray和NSDictionary都支持下标。 例如:

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

支持索引下标的方法是实现以下内容:

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

不,Objective-C不支持运算符重载。

首先,运营商超载是邪恶的 。 其次,C没有运算符重载,Objective-C是C的超集,只增加了一些关键字和消息语法。

话虽如此,如果您使用的是Apple的开发环境,您可以使用Objective-C ++而不是Objective-C,它可以让您访问所有C ++的错误和失误,包括操作符重载。 使用Objective-C ++最简单的方法就是将实现文件的扩展名从“.m”改为“.mm”