Cocos2d iphone 对于';没有可见的@界面;类别';声明选择器';选择器';
我遵循“学习Cocos2D”,在第4章中,我遇到了以下指令: 在GameLayer init方法中,在scheduleUpdate之后添加对initSpiders方法的调用,下面讨论:Cocos2d iphone 对于';没有可见的@界面;类别';声明选择器';选择器';,cocos2d-iphone,Cocos2d Iphone,我遵循“学习Cocos2D”,在第4章中,我遇到了以下指令: 在GameLayer init方法中,在scheduleUpdate之后添加对initSpiders方法的调用,下面讨论: -(id) init { if ((self=[super init])) { ... [self scheduleUpdate]; [self initSpiders]; } return self; } I get和ARC错误消息:“GameLayer”没有可见的@i
-(id) init {
if ((self=[super init])) {
...
[self scheduleUpdate];
[self initSpiders];
}
return self;
}
I get和ARC错误消息:“GameLayer”没有可见的@interface声明选择器“initspider”
我在电话里得到了同样的信息:自我重置
我错过了什么?在这一点上,一切都构建并运行得很好。这个问题源于这样一个事实,即
initspider
和resetspider
没有在类接口中声明,而是在.m
文件中在使用它们的点之后定义的
如果它们没有完全丢失,您可以通过以下两种方式之一修复此问题:
initspider
和resetspider
方法的定义移动到init
方法上方,错误将消失@接口
中为这两个方法添加声明检查您的代码,看看这些方法的实现是否可用。您的错误似乎是您也没有遵循本书的下一部分。完成下一节应该允许您编译代码,而不会出现类似这样的警告 本书该部分更完整的摘录如下: 在游戏场景
init
方法中,在scheduleUpdate:
在这之后,GameSecene
类中添加了相当多的代码,从清单4-8中的initspider
方法开始,该方法创建了蜘蛛精灵
清单4-8。为了便于访问,蜘蛛精灵被初始化并添加到CCArray中
-(void)initspider
{
CGSize screenSize=[[CCDirector sharedDirector]winSize];
//使用临时蜘蛛精灵是获取图像大小的最简单方法
CCSprite*tempSpider=[CCSprite spriteWithFile:@“spider.png”];
float imageWidth=[tempSpider纹理].contentSize.width;
//在整个屏幕宽度上,尽可能多地使用彼此相邻的蜘蛛网。
int numSpiders=screenSize.width/imageWidth;
//使用alloc初始化spider数组。
spider=[[CCArray alloc]initWithCapacity:numSpiders];
对于(int i=0;i
您编写了initspider
和resetspider
的方法了吗?“下一步讨论”一行表示您将要编写这些方法。如果使用XCode 4.3+这将不是问题。由于这个原因,此警告不再显示。@sergio-我已经按照书中的指示包含了.h文件声明:@brentg:是否可能您试图过早编译?我的意思是,您是否已经在书中找到了initspider
和resetspider
实现,并将它们粘贴到您的源文件中?很有趣。我复制了一个用于定义init方法的粘贴代码,并替换了我的代码。我用NSMutableArray更改了您的[[CCArray alloc]initWithCapacity:numSpiders],正如它在.h文件中声明的那样。[self-initSpiders]的错误消息消失,但[self-resetSpiders]调用的错误仍然存在。这不是我的代码。。这是本书下一部分的引文。(第二版)
-(id) init {
if ((self = [super init]))
{
… 96 CHAPTER 4: Your First Game
[self scheduleUpdate];
[self initSpiders];
}
return self;
}
-(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];
}