void CommonTools::sendChengJiuEvent(int id, int num /=1/)
{
int aa = 0;
Director::getInstance()->getEventDispatcher()->dispatchCustomEvent( CHENG_JIU_COMPLETE_ONE , &aa );
}
有可能接事件的时候 解指针不是0吗?
对这个问题一直很疑惑。。
void CommonTools::sendChengJiuEvent(int id, int num /=1/)
{
int aa = 0;
Director::getInstance()->getEventDispatcher()->dispatchCustomEvent( CHENG_JIU_COMPLETE_ONE , &aa );
}
有可能接事件的时候 解指针不是0吗?
对这个问题一直很疑惑。。
必须是有问题的,因为局部变量在函数退出的时候会被释放掉。
int值在外面已经被复制过一份呢?
dispatchCustomEvent会直接调用你的Listener的onEvent函数,当onEnent函数结束的时候,传递的局部变量就会被析构掉了~
扯淡,局部变量的内存分配和释放是根据域来的,懂不懂什么叫栈内存?楼主的a位于sendChengJiuEvent函数的第一个大括号域,应该在该函数结束的时候,也就是运行到右大括号域的时候被释放。当然楼主的onEvent不知道是怎么实现的,一般,C++的事件协议是不适合传递对象或变量地址的,极容易引发内存问题,因为接收方并不知道你传的东西位于栈还是堆,尤其不是本人维护的情况下,所以都是传基本数据类型(所以楼主为什么这里不传int类型,而要传指针类型呢)或直接传结构体变量(复制一份过去),看看MFC的sendMessage吧,有传对象地址的参数吗?
对啊,cocos2d封装的onEvent在运行到sendChengJiuEvent的右括号的时候已经调用了