У меня есть два класса, использующих Box2d, Cocos2d.
Construct.mm и Level1.mm
Construct содержит все методы для создания различных объектов в физическом движке box2d
Level1 содержит информацию о графикеобъектов.
В реализации конструкции у меня есть:
Construct.mm
-(void) someInitMethod{
Level1 *level1 = [[Level1 alloc] init];
[level1 mapping];
}
-(void) someCreateRectMethod:(argue)ments{
//create rect
}
В реализации уровня 1 у меня есть:
Level1.mm
-(void) mapping{
Construct *constr;
if (constr == nil) constr = [[Construct alloc] init];
[constr someCreateRectMethod:(argue)ments];
}
Теперь я знаю, что распределение Level1 * level1 работает нормально.Он переходит к - (void) mapping {}.
Моя проблема заключается в создании объекта Construct * constr и его инициализации.Без оператора if (constr == nil).Симулятор сразу же умрет, даже до публикации какого-либо сообщения об ошибке.
Если я поставлю if (constr == nil), а затем попробую вызвать [constr someCreateRectMethod: arguement];
Консоль сообщает:
* Завершение работы приложения из-за необработанного исключения 'NSInvalidArgumentException', причина: '- [Level1 someCreateRectMethod:]: нераспознанный селектор, отправленный экземпляру 0x5557fc0'
Я думаю, что это потому, что он не используется, поэтому пытается отправить себя (Level1), а не Construct.
Почему мой объект Construct * constr class не выделяет?Как я уже сказал, сообщений об ошибках не происходит .. Я импортировал файл Construct.h.Я потратил последние 4 часа, пытаясь заставить это работать.
РЕДАКТИРОВАТЬ
Я только что сделал слой 1 наследуемым от Construct.И вместо вызова [constr someCreateRectMethod];Я просто вызываю [super someCreateRectMethod];
Теоретически это должно работать, но симулятор падает, и отчеты об ошибках не регистрируются ..
Еще раз, спасибо за ваше время.
Оливер.