Предварительное объявление класса C ++ не позволяет вам использовать экземпляры класса, вы можете просто передать их.(Чтобы упростить пример, я опустил любой Objective-C.)
class Something;
void function(void)
{
Something *x; // Ok
x = new Something(); // Error
int z = x->field; // Error
x->method(); // Error
}
class Something : public Other { ... };
void function2(void)
{
Something *x; // Ok
x = new Something(); // Ok
int z = x->field; // Ok
x->method(); // Ok
}
Вы должны поместить полное определение класса, прежде чем использовать его.Предварительное объявление позволяет вам объявлять переменные только с использованием типа класса.
Таким образом, ответ таков: то, что вы спрашиваете, невозможно. (Что плохого в том, чтобы поместить определение класса вверху,в любом случае?)
Вы все еще можете поместить методы внизу:
class Something {
public:
void method();
};
@implementation ...
...
@end
void Something::method() { ... }