cocos2dx3.3 版本 最近iOS 经常会crash,发现斗士httpClient的问题。错误如下
cocos2d::network::HttpClient::networkThreadAlone(cocos2d::network::HttpRequest*)::_0::operator()() const (HttpClient.cpp:186)
10 MDS2 iOS 0x10056d164 void std::__1::__invoke_void_return_wrapper<void>::__call<cocos2d::network::HttpClient::networkThreadAlone(cocos2d::network::HttpRequest*)::_0&>(cocos2d::network::HttpClient::networkThreadAlone(cocos2d::network::HttpRequest*)::_0&&&) (__functional_base:440)
11 MDS2 iOS 0x10056cfdc std::__1::__function::__func<cocos2d::network::HttpClient::networkThreadAlone(cocos2d::network::HttpRequest*)::_0, std::__1::allocatorcocos2d::network::HttpClient::networkThreadAlone(cocos2d::network::HttpRequest*)::$_0, void ()>::operator()() (functional:1407)
12 MDS2 iOS 0x1005f9e2c std::__1::function<void ()>::operator()() const (functional:1793)
13 MDS2 iOS 0x10051eef8 cocos2d::Scheduler::update(float) (CCScheduler.cpp:979)
14 MDS2 iOS 0x10058da0c cocos2d::Director::drawScene() (CCDirector.cpp:267)
15 MDS2 iOS 0x100591778 cocos2d::DisplayLinkDirector::mainLoop() (CCDirector.cpp:1295)
16 MDS2 iOS 0x10099e23c - (CCDirectorCaller-ios.mm:110)
17 QuartzCore 0x1843eb814 CA::Display::DisplayLinkItem::dispatch() + 40
18 QuartzCore 0x1843eb6c8 CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 424
19 IOKit 0x181f161e8 IODispatchCalloutFromCFMessage + 372
20 CoreFoundation 0x181c431f8 __CFMachPortPerform + 180
21 CoreFoundation 0x181c59634 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION + 56
22 CoreFoundation 0x181c58d6c __CFRunLoopDoSource1 + 436
23 CoreFoundation 0x181c56ac4 __CFRunLoopRun + 1800
24 CoreFoundation 0x181b85680 CFRunLoopRunSpecific + 384
25 GraphicsServices 0x183094088 GSEventRunModal + 180
26 UIKit 0x1869fcd90 UIApplicationMain + 204
27 MDS2 iOS 0x10007ea20 main (main.m:13)
28 libdyld.dylib 0x1817268b8 start + 4
Global Trace Buffer (reverse chronological seconds):
139.160169 CFNetwork 0x000000018231b104 TCP Conn 0x15380eb80 complete. fd: 13, err: 0
139.161516 CFNetwork 0x000000018231c630 TCP Conn 0x15380eb80 event 1. err: 0
139.186070 CFNetwork 0x000000018231c708 TCP Conn 0x15380eb80 started
139.190797 CFNetwork 0x00000001823718bc Creating default cookie storage with default identifier
139.190797 CFNetwork 0x0000000182371888 Faulting in CFHTTPCookieStorage singleton
139.190908 CFNetwork 0x00000001823c3558 Faulting in
看错误好像说是HttpClient.cpp:186 行的。也就是 下面红色的代码
// Worker thread
void HttpClient::networkThreadAlone(HttpRequest* request)
{
// Create a HttpResponse object, the default setting is http access failed
HttpResponse *response = new (std::nothrow) HttpResponse(request);
char errorBuffer = { 0 };
processResponse(response, errorBuffer);
autoscheduler = Director::getInstance()->getScheduler();
scheduler->performFunctionInCocosThread({
const ccHttpRequestCallback& callback = request->getCallback();
Ref* pTarget = request->getTarget();
SEL_HttpResponse pSelector = request->getSelector();
if (callback != nullptr)
{
callback(s_pHttpClient, response);
}
else if (pTarget && pSelector)
{
(pTarget->*pSelector)(s_pHttpClient, response);
}
response->release();
// do not release in other thread
request->release();
});
}
看注释说需要释放的,但有时候会因为这个crash掉,求各位解答。谢谢。