6 ответов:
перегрузка операторов не является особенностью Objective-C. Если два экземпляра ваших классов могут быть добавлены вместе, предоставьте метод и разрешите им быть добавлены с помощью этого метода:
Thing *result = [thingOne thingByAddingThing:thingTwo];или, если ваш класс является изменяемым:
[thingOne addThing:thingTwo];
вы можете поддерживать подписку для вашего объекта. Подписка-это не перегрузка оператора, но это может быть удобно для объекта коллекции. NSArray и NSDictionary поддерживают подписку. Например:
NSMutableArray *a = [NSMutableArray new]; a[0] = @"Hello";способ поддержки индексной подписки заключается в реализации следующего:
-(id)objectAtIndexedSubscript:(NSUInteger)idx; -(void)setObject:(id)newObject atIndexedSubscript:(NSUInteger)idx];
во-первых, перегрузка оператора зло. Во-вторых, C не имеет перегрузки оператора, а Objective-C является правильным надмножеством C, которое добавляет только несколько ключевых слов и синтаксис обмена сообщениями.
при этом, если вы используете среду разработки Apple, вы можете использовать Objective-C++ вместо Objective-C, что дает вам доступ ко всем ошибкам и ошибкам C++, включая перегрузку оператора. Самый простой способ использовать Objective-C++ - это просто измените расширение в файлах реализации с ".m "to". mm"
Comments