Подтвердить что ты не робот

Можно ли перегрузить оператор в Objective-C?

Можно ли переопределить использование оператора в Objective-C?

Например

myClassInstance + myClassInstance

вызывает пользовательскую функцию для добавления двух.

4b9b3361

Ответ 1

Перегрузка оператора не является функцией Objective-C. Если два экземпляра ваших классов могут быть добавлены вместе, укажите метод и добавьте их с помощью этого метода:

Thing *result = [thingOne thingByAddingThing:thingTwo];

Или, если ваш класс изменен:

[thingOne addThing:thingTwo];

Ответ 2

Нет, вы не можете сделать это в Objective-C.

Ответ 4

Возможно, вы захотите поддержать подписку на свой объект. Подписки - это не перегрузка операторов, но это может быть удобно для объекта коллекции. NSArray и NSDictionary поддерживают подписи. Например:

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

Способ поддержки индексирования индексирования заключается в следующем:

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

Ответ 5

Нет, Objective-C не поддерживает перегрузку оператора.

Ответ 6

Во-первых, перегрузка оператора зла. Во-вторых, C не имеет перегрузки оператора, а Objective-C является надлежащим надмножеством C, который добавляет только несколько ключевых слов и синтаксис сообщений.

Если вы используете среду разработки Apple, вы можете использовать Objective-C ++ вместо Objective-C, что дает вам доступ ко всем ошибкам и ошибкам С++, включая перегрузку операторов. Самый простой способ использовать Objective-C ++ - это просто изменить расширение в файлах реализации с ".m" на ".mm"