Похоже, у вас есть проблема круговой зависимости. Да, для ее разрешения каждый файл имплементации (.m
) должен #import
иметь соответствующий заголовочный файл. Однако, если вы попытаетесь получить заголовок files #import
друг с другом, у вас возникнут проблемы.
Чтобы использовать наследование, вам нужно знать размер суперкласса, что означает, что вам нужно #import
его. Однако для других вещей, таких как переменные-члены, которые являются указателями, или методы, которые принимают в качестве параметра или возвращают другой тип, вам на самом деле не нужно определение класса, поэтому вы можете использовать прямую ссылку устранить ошибки компилятора.
// bar.h
@class A; // forward declaration of class A -- do not to #import it here
@interface bar : UIViewController
{
A *member; // ok
}
- (A) method:(A)parameter; // also ok
@end
// bar.m
#import "bar.h"
#import "A.h"
// can now use bar & A without any errors or warnings