Objective-Cでの演算子の使用をオーバーライドすることは可能ですか?
例えば
myClassInstance + myClassInstance
2つを追加するカスタム関数を呼び出します。
演算子のオーバーロードはObjective-Cの機能ではありません。クラスの2つのインスタンスを一緒に追加できる場合は、メソッドを提供し、そのメソッドを使用してそれらを追加できるようにします。
Thing *result = [thingOne thingByAddingThing:thingTwo];
または、クラスが変更可能な場合:
[thingOne addThing:thingTwo];
いいえ、Objective-Cではこれを行うことはできません。
オブジェクトの添え字をサポートしたい場合があります。添え字はnot演算子のオーバーロードですが、コレクションオブジェクトには便利です。 NSArrayとNSDictionaryはどちらも添え字をサポートしています。例えば:
_NSMutableArray *a = [NSMutableArray new]; a[0] = @"Hello";
_
インデックスの添え字をサポートする方法は、以下を実装することです。
-(id)objectAtIndexedSubscript:(NSUInteger)idx; -(void)setObject:(id)newObject atIndexedSubscript:(NSUInteger)idx];
いいえ、Objective-Cは演算子のオーバーロードをサポートしていません。