我更新了xcode14,并在ios16手机上运行我的代码,结果它崩溃了。ios16下的所有移动应用程序都正常工作。系统提示输入以下消息,
{
LogTrace();
NSAssert(dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey), @"Must be dispatched on socketQueue");
NSAssert((readStream != NULL && writeStream != NULL), @"Read/Write stream is null");
CFStreamStatus readStatus = CFReadStreamGetStatus(readStream);
CFStreamStatus writeStatus = CFWriteStreamGetStatus(writeStream);
if ((readStatus == kCFStreamStatusNotOpen) || (writeStatus == kCFStreamStatusNotOpen))
{
LogVerbose(@"Opening read and write stream...");
BOOL r1 = CFReadStreamOpen(readStream);//Enqueued from GCDAsyncSocket (Thread 7)
BOOL r2 = CFWriteStreamOpen(writeStream);
if (!r1 || !r2)
{
LogError(@"Error in CFStreamOpen");
return NO;
}
}
return YES;
}错误信息:
从GCDAsyncSocket排队(线程7)
这就是我在调用xmpp连接时所做的事情。我试着找出问题,但我想不出来。
发布于 2022-11-11 06:01:07
CocoaAsyncSocket库使用的是背景套接字,这不是苹果推荐的方法。自iOS 10 (2016年起)以来,库本身就不再推荐这个属性了。该库还建议使用"PushKit和XEP-0357模块“代替这个模块。
将enableBackgroundingOnSocket设置为false以解决此问题。
asyncSocket.enableBackgroundingOnSocket = NO;https://stackoverflow.com/questions/74178431
复制相似问题