首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS16从GCDAsyncSocket中排队

iOS16从GCDAsyncSocket中排队
EN

Stack Overflow用户
提问于 2022-10-24 08:31:09
回答 1查看 52关注 0票数 0

我更新了xcode14,并在ios16手机上运行我的代码,结果它崩溃了。ios16下的所有移动应用程序都正常工作。系统提示输入以下消息,

代码语言:javascript
复制
{
    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连接时所做的事情。我试着找出问题,但我想不出来。

EN

回答 1

Stack Overflow用户

发布于 2022-11-11 06:01:07

CocoaAsyncSocket库使用的是背景套接字,这不是苹果推荐的方法。自iOS 10 (2016年起)以来,库本身就不再推荐这个属性了。该库还建议使用"PushKit和XEP-0357模块“代替这个模块。

enableBackgroundingOnSocket设置为false以解决此问题。

代码语言:javascript
复制
asyncSocket.enableBackgroundingOnSocket = NO;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74178431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档