在cccallfuncnd中,我们通过指针.通过当地范围的指针是一个好习惯

In CCCallFuncND we pass pointers. Is it a good practice to pass pointer of local scope

本文关键字:指针 好习惯 一个 cccallfuncnd 我们 范围      更新时间:2023-10-16

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

这不是一个好习惯。您可以通过,但是如果您没有立即运行CCCALLFUNCND,则不能使用它。如果将其放入CC序列并以后运行,则Void*将指向某个无效的地址。

它是安全的,只要您不将指针返回到本地变量(一旦您从方法返回后,它就会超出范围)。有了新的对象内存,将在堆上分配(请小心新的位置),因此可以安全地从功能中返回它。工厂模式也有同样的事情。http://www.oodesign.com/factory-pattern.html