0

CCCallFuncND では、ポインタを渡します。別のメソッドからローカル スコープのポインター (つまり、メンバーで宣言および割り当てられたポインター) を渡すことをお勧めします。

メソッドは次のようなものです:-

CCCallFuncND * CCCallFuncND::create(CCObject* pSelectorTarget, SEL_CallFuncND selector,    void* d)
{
    CCCallFuncND* pRet = new CCCallFuncND();

    if (pRet && pRet->initWithTarget(pSelectorTarget, selector, d))
    {
        pRet->autorelease();
        return pRet;
    }

    CC_SAFE_DELETE(pRet);
    return NULL;
}
4

2 に答える 2

0

ローカル変数へのポインターを返さない限り安全です (メソッドから戻るとスコープ外になります)。オブジェクトの新しいメモリはヒープに割り当てられるため (新しい配置には注意してください)、関数から安全に返すことができます。Factory Pattern も同じことを行います。 http://www.oodesign.com/factory-pattern.html

于 2012-11-08T07:08:24.677 に答える
0

それは良い習慣ではありません。パスすることはできますが、CCCallFuncND をすぐに実行しなかった場合は使用できません。これを CCSequence に入れて後で実行すると、void* は無効なアドレスを指します。

于 2012-11-09T00:54:19.283 に答える