2012-11-08 16 views
0

在CCCallFuncND中,我們傳遞指針。從另一個方法傳遞局部作用域的指針(即在成員中聲明和分配的指針)是一個好習慣。在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

我想知道傳遞一個像這樣的指針變量是否安全? – dkumar

+0

你的意思是你將指針傳遞給你在問題中描述的函數的局部變量?或者你問是否可以將指針參數傳遞給你調用的函數是否安全? –

+0

@JoachimPileborg我想傳遞一個指針變量。這個函數內置在cocos2d-x中。我是否需要特別在意傳遞的指針(即,只要此方法和線程在這個指針上調用,它就不應該被刪除) – dkumar

回答

0

這不是一個好習慣。您可以通過,但如果您沒有立即運行CCCallFuncND,則無法使用它。如果將它放入CCS序列並稍後運行,則void *將指向某個無效地址。

0

它是安全的,只要你(一旦你從方法返回,這將走出去的範圍)不返回指向局部變量。隨着對象的新內存分配在堆上(小心放置新的對象),因此從函數返回它是安全的。 工廠模式做同樣的事情。 http://www.oodesign.com/factory-pattern.html

+0

還要注意,如果指針是一個指向局部變量的指針,則傳遞指針的函數不會將其存儲以供將來使用。 –