在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;
}
答案 0 :(得分:0)
只要你没有返回指向局部变量的指针(一旦从方法返回就会超出范围),这是安全的。在堆上分配对象的新内存(小心放置新的),因此从函数返回它是安全的。 工厂模式做同样的事情。 http://www.oodesign.com/factory-pattern.html
答案 1 :(得分:0)
这不是一个好习惯。您可以传递,但如果您没有立即运行CCCallFuncND则无法使用它。如果你将它放入CCSequence并稍后运行,则void *将指向一些无效的地址。