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



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





myClassInstance + myClassInstance


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

648   6  

6 ответов:

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

Thing *result = [thingOne thingByAddingThing:thingTwo];

или, если ваш класс является изменяемым:

[thingOne addThing:thingTwo];

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

вы можете сделать это сейчас в Swift, преемник objC. И поскольку 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 "to". mm"

Comments

    Ничего не найдено.