У меня есть несколько классов, которые являются подклассами одного класса Layer .. по какой-то причине один из подклассов действует по-другому. это урезанная версия:
@interface Layer: CCLayer
{
GameScene* _scene;
CCNode* _layerNode;
}
@end
#import "Layer.h"
@interface UILayer: Layer
{
}
@end
@implementation UILayer
-(void) doStuff
{
[_layerNode addChild:[CCNode node]]; <---gives compile error: "_layerNode was not declared in this scope"
[_scene playSound];<------gives compile error: "_scene was not declared in this scope"
}
@end
Я думаю, что это дает основную идею. Я могу это исправить, выполнив
[[_self _layerNode] addChild:[CCNode node]];
[[_self _scene] playSound];
но что я не могу понять, так это то, почему другие подклассы Layer могут напрямую обращаться к _layerNode и _scene? Я предполагаю, что это проблема с настройками сборки. В дальнейшем эта проблема возникает только тогда, когда я создаю ее для устройства (iphone), а не для симулятора. дайте мне знать, если вам нужна дополнительная информация, чтобы ответить.
Edit:
Ой, я написал это неправильно. Это должен был быть [[self _layerNode] addNode:[CCNode node]]
, но я предполагаю, что вопрос заключается в том, почему один подкласс имеет прямой доступ к ivar _layerNode
, а другой должен иметь к нему доступ с помощью [self _layerNode]
. Как будто UILayer не может найти заголовок суперкласса