Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在没有alloc的情况下访问另一个类中的方法_Objective C_Cocos2d Iphone - Fatal编程技术网

Objective c 在没有alloc的情况下访问另一个类中的方法

Objective c 在没有alloc的情况下访问另一个类中的方法,objective-c,cocos2d-iphone,Objective C,Cocos2d Iphone,我制作了一个方法播放器方法(继承自NSObject),我在HelloWorldLayer类中初始化了该方法。我想声明同一类的其他方法,这样我就不需要分配它们了。例如: Player.mm -(id)spritePlayer:(CCLayer *)parentLayer inWorld:(b2World *)world { creation of sprite body and other stuff } 我想在contact Listener

我制作了一个方法播放器方法(继承自NSObject),我在HelloWorldLayer类中初始化了该方法。我想声明同一类的其他方法,这样我就不需要分配它们了。例如:

Player.mm

-(id)spritePlayer:(CCLayer *)parentLayer 
                     inWorld:(b2World *)world
{
    creation of sprite body and other stuff
}
我想在contact Listener类中使用此方法,但我已将其声明为player类:

-(void) touchingFix:(b2Fixture *)touchedFix
{
    bodyTouched=TRUE;
    bodyFix=touchedFix;
}
在Contact Listener类中,我只能通过以下方式访问它:

[[Player alloc] touchingFix:fixtureA];

我不能在不使用其他方法分配的情况下以某种方式访问它吗?如果是,我该怎么做。

将其更改为类方法:删除该方法前面的“-”,并将其更改为“+”

+(void) touchingFix:(b2Fixture *)touchedFix
{
    bodyTouched=TRUE;
    bodyFix=touchedFix;
}
您可以使用类名而不是指向类实例的指针来访问类方法:

[Player touchingFix:fixtureA];

我已经将“-”改为“+”,但是我在
touchingFix
方法的行中得到了一个错误,它说
实例变量“bodytouch”在类变量中访问
,在
bodyFix
中也是如此。对不起,我的意思是“实例变量“bodytouch”在类方法中访问”将变量设置为静态。对不起,我已经有一段时间没上论坛了。我已经将变量更改为static,但是我得到一个错误,它说“type name不允许指定存储类”,您不能在接口或实现括号块中声明静态变量。尝试将它们放在.h文件的@interface行之前(但在导入之后)。但是,您应该真正考虑这些变量是否应该在类的所有实例之间共享(这就是静态变量的用途)。可以将实例传递给类方法并设置其属性,等等。