为“类”无可见@interface声明选择“选择”
我在下面的“学习的Cocos2D”和第4章中,我遇到了以下指令:为“类”无可见@interface声明选择“选择”
而在GameLayer init方法,加在调用initSpiders方法接下来讨论,scheduleUpdate之后:
-(id) init {
if ((self=[super init])) {
...
[self scheduleUpdate];
[self initSpiders];
}
return self;
}
我得到和ARC错误消息:“GameLayer”不可见的@interface声明选择“initSpiders”
我得到了同样的信息在线:self resetSpiderrs
我在想什么?一切都建立起来并且运行良好。
此问题源于initSpiders
和resetSpiders
未在您的类接口中声明,并且在使用它们之后的.m
文件中定义。
如果他们没有完全丢失,您可以在任何的2种方式解决这个问题:
移动的
initSpiders
和resetSpiders
以上方法你init
方法和错误会消失的定义;在该类的
@interface
中为这两种方法添加声明。
(如果两者都做,它也将工作)
检查你的代码,看看是否对这些方法的实施是可用的。
你的错误似乎是你没有遵循本书的下一部分。完成下一节应该允许你编译你的代码而不用像这样的警告。
更完整的书的那部分的提取物是:
而在GameScene
init
方法的调用添加到下一个讨论的initSpiders
方法,之后scheduleUpdate:
-(id) init {
if ((self = [super init]))
{
… 96 CHAPTER 4: Your First Game
[self scheduleUpdate];
[self initSpiders];
}
return self;
}
之后,将一小段代码添加到
GameScene
类中,从开始清单4-8中的方法创建了蜘蛛图。代码4-8。为了方便查找,蜘蛛精灵被初始化并添加到CCArray
-(void) initSpiders
{
CGSize screenSize = [[CCDirector sharedDirector] winSize];
// using a temporary spider sprite is the easiest way to get the image's size
CCSprite* tempSpider = [CCSprite spriteWithFile:@"spider.png"];
float imageWidth = [tempSpider texture].contentSize.width;
// Use as many spiders as can fit next to each other over the whole screen width.
int numSpiders = screenSize.width/imageWidth;
// Initialize the spiders array using alloc.
spiders = [[CCArray alloc] initWithCapacity:numSpiders];
for (int i = 0; i < numSpiders; i++)
{
CCSprite* spider = [CCSprite spriteWithFile:@"spider.png"];
[self addChild:spider z:0 tag:2];
// Also add the spider to the spiders array.
[spiders addObject:spider];
}
// call the method to reposition all spiders
[self resetSpiders];
}
有趣。我复制了一个粘贴你的代码来定义init方法,并取代我的。我用.h文件中声明的NSMutableArray更改了[[CCArray alloc] initWithCapacity:numSpiders]。错误消息为[self initSpiders]消失,但错误仍然存在[self resetSpiders]调用。 – brentg
这不是我的代码..这是本书的下一个部分的引用。 (第二版) –
你写过的'initSpiders'和'resetSpiders'但这些方法? “下一步讨论”这一行意味着你即将写出这些方法。 –