在CCCallFuncND中,我们传递指针。传递局部范围的指针是一个好习惯

时间:2012-11-08 06:57:36

标签: c++ ios pointers cocos2d-x

在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;
}

2 个答案:

答案 0 :(得分:0)

只要你没有返回指向局部变量的指针(一旦从方法返回就会超出范围),这是安全的。在堆上分配对象的新内存(小心放置新的),因此从函数返回它是安全的。 工厂模式做同样的事情。 http://www.oodesign.com/factory-pattern.html

答案 1 :(得分:0)

这不是一个好习惯。您可以传递,但如果您没有立即运行CCCallFuncND则无法使用它。如果你将它放入CCSequence并稍后运行,则void *将指向一些无效的地址。