Objective-C — это язык программирования, который долгое время был основным для разработки под macOS и iOS. Несмотря на появление Swift, понимание Objective-C остаётся полезным навыком, особенно при работе с устаревшим кодом и системными библиотеками. В этой статье мы разберём, как реализовать простой алгоритм на Objective-C, и уделим внимание ключевым особенностям языка, важным для начинающих.
Прежде чем приступить к написанию кода, новичку стоит усвоить несколько базовых концепций Objective-C.
В качестве примера реализуем алгоритм вычисления чисел Фибоначчи. Это классическая задача, которая хорошо показывает работу с циклами, переменными и методами. Мы создадим класс FibonacciCalculator с методом, возвращающим n-е число последовательности.
Заголовочный файл объявляет интерфейс класса. Именно здесь другие части программы узнают, какие методы доступны.
#import <Foundation/Foundation.h>
@interface FibonacciCalculator : NSObject
- (NSInteger)fibonacciNumberAtIndex:(NSInteger)index;
@endСтрока @interface объявляет новый класс, наследующий NSObject — базовый класс большинства объектов в Objective-C. Метод принимает целое число и возвращает целое число.
В файле реализации опишем сам алгоритм. Используем итеративный подход, так как он эффективнее рекурсивного и не приводит к переполнению стека при больших значениях.
#import "FibonacciCalculator.h"
@implementation FibonacciCalculator
- (NSInteger)fibonacciNumberAtIndex:(NSInteger)index {
if (index <= 0) {
return 0;
}
if (index == 1) {
return 1;
}
NSInteger previous = 0;
NSInteger current = 1;
for (NSInteger i = 2; i <= index; i++) {
NSInteger next = previous + current;
previous = current;
current = next;
}
return current;
}
@endРазберём ключевые моменты реализации.
Теперь покажем, как вызвать созданный метод из основной программы.
#import <Foundation/Foundation.h>
#import "FibonacciCalculator.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
FibonacciCalculator *calculator = [[FibonacciCalculator alloc] init];
NSInteger result = [calculator fibonacciNumberAtIndex:10];
NSLog(@"10-е число Фибоначчи: %ld", (long)result);
}
return 0;
}Обратите внимание на конструкцию @autoreleasepool: она управляет пулом автоматического освобождения объектов и полезна при работе с памятью. Создание объекта происходит в два шага — выделение памяти через alloc и инициализация через init.
Реализация алгоритмов на Objective-C требует понимания как самой логики задачи, так и особенностей языка. Освоив базовый синтаксис классов, методов и работы с памятью, вы сможете уверенно переходить к более сложным проектам и поддерживать существующий код.