Я использую Multipeer-Connectivity.
Когда сеанс заканчивается, приложение переходит в главное меню, и все сетевые данные освобождаются, а затем освобождаются.
Но мой метод Dealloc вызывается в основном потоке, и объекту MCSession
требуется очень много времени, чтобы освободить себя, я не знаю почему, и, следовательно, экран главного меню зависает.
Если кто-то знает, почему MCSession
может быть таким длинным, мне интересно. Но если это исходит от самой MCSession, является ли это хорошим решением для этого?
-(void) dealloc
{
//... other release
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[_session release];
_session = nil;
});
[super dealloc];
}
EDIT: нет, это определенно не очень хорошее решение, потому что оно приводит к сбою моего приложения. В любом случае, другие идеи?