DidBeginContact在另一个类中

时间:2015-05-13 13:13:40

标签: objective-c sprite-kit

我想在另一堂课处理我所有的联系人。我真的不知道怎么做,所以我这样做:

HandleContact是SKNode的子类

-(void)didBeginContact:(SKPhysicsContact *)contact {

    HandleContact *handleContact = [[HandleContact alloc]
    initWithBodyA:contact.bodyA.node bodyB:contact.bodyB.node
    scene:self];
}

一切都按预期工作,但我收到此错误:

  

未使用的变量'HandleContact'

那我该如何正确地做到这一点? (也许我应该使用其他类型?)

1 个答案:

答案 0 :(得分:1)

您当前的代码是内存泄漏。每次注册联系人时,都会实例化一个HandleContact类。如果您想要一个类来处理您的联系人,我建议您在代码的开头实例化它并保留对它的引用。像(void)didMoveToView:(SKView *)view

这样的地方

您需要问自己的问题是,为什么需要一个班级来处理您的联系人?如果您希望整理代码,可以在didBeginContact内调用不同的方法。

-(void)didBeginContact:(SKPhysicsContact *)contact {
    uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);

    if (collision == (CategoryAlpha | CategoryBeta))
        [self myMethod1];
}