C++ 与obj-c弱链接等一起丢失

C++ 与obj-c弱链接等一起丢失,c++,objective-c,cocos2d-iphone,box2d,C++,Objective C,Cocos2d Iphone,Box2d,我对这一点还不熟悉,也没有任何线索,我现在读了很多东西,但不知何故,它们似乎都没有解释这一点 我正在做一个游戏,但不知怎的我迷路了 GameSecene.h在界面中有以下声明: Player *player; b2Body *b2PlayerBody; 在GameScene.mm(使用box2d,so need.mm)中,当我在函数中创建播放器(来自另一个类)时,我将此b2PlayerBody设置为我使用的主体,将其推送到播放器类并使用它 -(void) addPlayerAtPositio

我对这一点还不熟悉,也没有任何线索,我现在读了很多东西,但不知何故,它们似乎都没有解释这一点

我正在做一个游戏,但不知怎的我迷路了

GameSecene.h在界面中有以下声明:

Player *player; 
b2Body *b2PlayerBody;
在GameScene.mm(使用box2d,so need.mm)中,当我在函数中创建播放器(来自另一个类)时,我将此b2PlayerBody设置为我使用的主体,将其推送到播放器类并使用它

-(void) addPlayerAtPosition:(CGPoint)p
{
    CCLOG(@"Adding player at %0.2f x %02.f",p.x,p.y);

    // Player
    player = [[Player alloc] initWithPosition:ccp(p.x, p.y)];
    player.anchorPoint = ccp(0,0.5);
    [self addChild:player z:10 tag:kTagPlayerNode];



    // Define the dynamic body.
    //Set up a 1m squared box in the physics world
    b2BodyDef bodyDef;
    bodyDef.type = b2_dynamicBody;
    bodyDef.position.Set(p.x/PTM_RATIO, p.y/PTM_RATIO);
    b2PlayerBody = world->CreateBody(&bodyDef);

    // Define another box shape for our dynamic body.
    b2PolygonShape dynamicBox;
    dynamicBox.SetAsBox(.5f, .5f);//These are mid points for our 1m box

    // Define the dynamic body fixture.
    b2FixtureDef fixtureDef;
    fixtureDef.shape = &dynamicBox; 
    fixtureDef.density = 1.0f;
    fixtureDef.friction = 0.3f;
    b2PlayerBody->CreateFixture(&fixtureDef);
    [player setPhysicsBody:b2PlayerBody];
}
在这个文件的更新方法中,我调用(dt是delta):

在player.h文件中,我有: 对……的贬低

- (void)update:(ccTime)dt withBody:(b2Body *)body;
在我的player.mm文件中

- (void)update:(ccTime)dt withBody:(b2Body *)body {

}
启动时,它在从GameSecene.mm更新时崩溃,没有任何错误文本

[player update:dt withBody:b2PlayerBody]; //update player
我做错了什么

还有谁能告诉我这两个问题之间的区别是什么(如果这是一个愚蠢的问题,请原谅)

b2Body*b2PlayerBody; b2Body*b2PlayerBody;//我知道这是一个薄弱环节,但有什么区别。 b2Body b2PlayerBody

在释放方法中,这些链接方法对内存释放也有影响吗

b2Body * b2PlayerBody;
b2Body* b2PlayerBody;
b2Body *b2PlayerBody;
没有内存管理关键字(分别是“assign”属性)的实例变量(本例中的指针)称为“弱引用”。星号的位置没有区别,只是考虑您喜欢哪种样式。就个人而言,我更喜欢数据类型旁边的星号,而不是变量

弱链接仅指静态库,即您可以“弱链接”到Game Center,以便您的应用程序在没有Game Center的设备上运行。在这种情况下,您必须确保应用程序不会在没有GC的设备上调用任何GC方法


这些声明对内存管理没有影响。您负责根据需要分配和释放实例变量。在本例中,它是通过Box2DAPI完成的,即通过CreateBody和DestroyBody方法

我已经通过(b2Body)body{在方法和(b2Body)中解决了它在init中…仍然想知道…但是…对于ARC,实例变量不是弱引用,它们默认为
\uuuuu strong
引用。这可能会让将来学习ARC的人非常困惑,并且在
\uuu弱
弱链接
之间产生混淆。因此我否决了投票,因为这个问题没有足够的c对我的口味来说,这是一种刺激。
b2Body * b2PlayerBody;
b2Body* b2PlayerBody;
b2Body *b2PlayerBody;