我可以在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”