编译器找不到我自己的方法

时间:2012-10-15 10:21:15

标签: objective-c xcode cocos2d-iphone

我最近开始学习Objective-C和Cocos-2D。我试图定义自己的方法来自动创建精灵。

我添加了自己的类,我也将创建其他自动化方法。无论如何我的.h文件看起来像这样:

#import <Foundation/Foundation.h>
#import "cocos2d.h"

@interface ActionsClass : CCNode {

  }

@property (nonatomic, strong) CCSprite* createSprite;
@property (nonatomic, strong) CCSprite* spriteName;
@property (nonatomic, strong) NSString* pngName;
@property (nonatomic) CGPoint* spriteCoordinate;

- (CCSprite *)createSprite: (CCSprite *)spriteName: (NSString *)pngName: (CGPoint *)spriteCoordinate;

@end

而.m是:

#import "ActionsClass.h"


@implementation ActionsClass

@synthesize createSprite = _createSprite;
@synthesize spriteName = _spriteName;
@synthesize pngName = _pngName;
@synthesize spriteCoordinate = _spriteCoordinate;

- (CCSprite *)createSprite: (CCSprite *)spriteName: (NSString *)pngName: (CGPoint *)spriteCoordinate
{

if (!_createSprite)
{
    _createSprite = [[CCSprite alloc] init];
    _spriteName = [CCSprite spriteWithFile:_pngName];
    _spriteName.position = ccp(_spriteCoordinate->x, _spriteCoordinate->y);
    [self addChild:_spriteName];
}

return _createSprite;
}

@end

在我要调用方法的主.m文件中:

[self createSprite: saif: @"saif.png": ccp(100,100)];

这会发出警告,xcode没有找到实例方法 createSprite 并将其默认为 id

非常感谢,如果问题的字体或格式不是很整洁,那就很抱歉。

1 个答案:

答案 0 :(得分:1)

您的方法声明错误,因此您无法调用它。

应该是:

- (CCSprite *)createSprite:(CCSprite *)spriteName pngName:(NSString *)pngName coord:(CGPoint *)spriteCoordinate;

并称之为:

[self createSprite:someSprite pngName:somePNGName coord:someCoord];

编辑:我没有看到你试图从另一个班级调用它。为此,您需要导入ActionsClass头文件,并在ActionsClass的实例上调用此方法,例如

ActionsClass *actionsClassObject = [[ActionsClass alloc] init];
[actionsClassObject createSprite:someSprite pngName:somePNGName coord:someCoord];