Между этими терминами есть разница, и я вижу, где твоя путаница.
#import
используется для загрузки определений h-файла класса. В некотором смысле это похоже на ключевое слово using
в C #, но в Objective-C нам нужно указать все на уровне класса, а не на уровне пространства имен - в Objective-C нет концепции инкапсуляции на уровне пространства имен.
Ключевое слово @class
используется всякий раз, когда вам нужно объявить, что объект действителен - но если вы собираетесь использовать внутренности этого объекта, вам в конечном итоге все равно нужно будет добавить #import
класса. Здесь есть отличный ответ на разницу между @class и # import .
Как и в C # и Java, наследование достигается с помощью оператора: в вашем h-файле. Итак, в вашем объявлении класса B оно должно выглядеть следующим образом:
@interface Class_B : Class_A
Надеюсь, это все прояснит.
обновление для вашего комментария:
Допустим, я хочу наследовать класс A в класс B и где-то использовать класс C в качестве переменной. Для работы вам понадобится ff:
#import "Class_A.h"
@class Class_C;
@interface Class_B : Class_A {
Class_C *myvariable
}
Теперь, скажем, где-то внутри вашего файла вам нужен доступ к члену Class_C, например, myvariable.Property1
, это время, когда вы превращаете @class Class_C
в #import "Class_C.h"
.
Не думаю, что объявляю это так:
@class Class_A;
@interface Class_B : Class_A
будет работать ... вам все равно понадобится #import "Class_A.h"
где-нибудь, что делает объявление @class
несколько избыточным.