В 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

Решение

Это не очень хорошая практика. Вы можете пройти, но вы не можете использовать его, если вы не запустили CCCallFuncND немедленно. если вы поместите его в CCSequence и запустите позже, void * будет указывать на некоторый неверный адрес.

0

Другие решения

Это безопасно до тех пор, пока вы не вернете указатели на локальные переменные (которые выйдут из области видимости после возврата из метода). С новой памятью для объекта выделяется куча (будьте осторожны с размещением новой) и, следовательно, можно безопасно вернуть ее из функции.
Factory Pattern делает то же самое.
http://www.oodesign.com/factory-pattern.html

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector