Имеете ли вы опыт работы с Objective-C?

«Имеете ли вы опыт работы с Objective-C?» — вопрос из категории Swift Core, который задают на 34% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, имею практический опыт работы с Objective-C, преимущественно в контексте поддержки и модернизации legacy-кода в iOS-проектах, а также для интеграции со специфичными библиотеками и низкоуровневыми фреймворками Apple.

Ключевые области опыта:

  • Поддержка и рефакторинг смешанных проектов (Swift/Objective-C), использование Bridging Headers.
  • Работа с API, которые изначально написаны на Objective-C (например, некоторые части CoreFoundation, CoreGraphics, старые версии SDK).
  • Понимание ручного управления памятью (MRC) и Automatic Reference Counting (ARC).
  • Использование ключевых концепций языка: селекторы (@selector), категории (Categories), расширения (Extensions), протоколы, блоки (blocks).
  • Базовое понимание Objective-C Runtime.

Пример объявления класса и реализации:

// MyClass.h
@interface MyClass : NSObject
@property (nonatomic, strong, readonly) NSString *identifier;
@property (nonatomic, assign) NSInteger count;
- (instancetype)initWithIdentifier:(NSString *)identifier;
- (void)performActionWithCompletion:(void (^)(BOOL success))completion;
@end

// MyClass.m
#import "MyClass.h"
@implementation MyClass
- (instancetype)initWithIdentifier:(NSString *)identifier {
    self = [super init];
    if (self) {
        _identifier = [identifier copy];
        _count = 0;
    }
    return self;
}
- (void)performActionWithCompletion:(void (^)(BOOL))completion {
    // Некоторая логика...
    self.count++;
    if (completion) {
        completion(YES);
    }
}
@end