看以下代码,一看就晕头了。
typedef void (cocos2d::Ref::*SEL_HttpResponse)(HttpClient* client, HttpResponse* response);
#define httpresponse_selector(_SELECTOR) (cocos2d::network::SEL_HttpResponse)(&_SELECTOR)
CC_DEPRECATED_ATTRIBUTE inline void setResponseCallback(Ref* pTarget, SEL_CallFuncND pSelector)
{
setResponseCallback(pTarget, (SEL_HttpResponse) pSelector);
}
```
因为只能设置一个回调函数并且不支持上下文,所以,一个HttpRequest 只能对应一个接口了。或者得自己在 HTTP请求和响应中加上下文来区分。
如果改成C++11的风格。
typedef std::function SEL_HttpResponse;
#define httpresponse_selector(_SELECTOR) (std::bind(&_SELECTOR, this, std::placeholders::_1, std::placeholders::_2) )
这样就可以利用std::bind来传递下下文:
http_resonse->setResponseCallback(std::bind(&Test::CallBack, this, _1,_2, "上下文参数") );
是不是方便很多,这样,再也不要维护一大堆 HttpRequest 了