Можно ли переопределить использование оператора в Objective-C?
Например,
myClassInstance + myClassInstance
вызывает пользовательскую функцию для добавления двух.
Перегрузка операторов не является функцией Objective-C. Если два экземпляра ваших классов могут быть добавлены вместе, укажите метод и разрешите их добавление с помощью этого метода:
Thing *result = [thingOne thingByAddingThing:thingTwo];
Или, если ваш класс является изменяемым:
[thingOne addThing:thingTwo];
Во-первых, перегрузка операторов — это зло. Во-вторых, C не поддерживает перегрузку операторов, а Objective-C является полноценным надмножеством C, в котором добавлено лишь несколько ключевых слов и синтаксис обмена сообщениями.
При этом, если вы используете среду разработки Apple, вы можете использовать Objective-C++ вместо Objective-C, что дает вам доступ ко всем ошибкам и недостаткам C++, включая перегрузку операторов. Самый простой способ использовать Objective-C++ — просто изменить расширение файлов реализации с «.m» на «.mm»
.