Я переписываю библиотеку Java в Objective-C, и я столкнулся с странной ситуацией. У меня есть два класса, которые импортируют друг друга. Это круговая зависимость. Поддерживает ли Objective-C такую ситуацию? Если нет, как вы рекомендуете его переписать?
Поддерживает ли Objective-C круговые зависимости?
Ответ 1
Импорт класса не является наследованием. Objective-C не допускает круговое наследование, но он допускает круговые зависимости. Что бы вы сделали, это объявить классы в заголовках друг друга с помощью директивы @class
, и каждый файл реализации класса импортирует другой заголовок. К остроумию:
ClassA.h
@class ClassB;
@interface ClassA : NSObject {
ClassB *foo;
}
@end
ClassA.m
#import "ClassB.h"
@implementation ClassA
// Whatever goes here
@end
ClassB.h
@class ClassA;
@interface ClassB : NSObject {
ClassA *foo;
}
@end
ClassB.m
#import "ClassA.h"
@implementation ClassB
// Whatever goes here
@end