Ответ
Да, имею практический опыт работы с 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