背景上的 NSStream 没有调用

Posted

技术标签:

【中文标题】背景上的 NSStream 没有调用【英文标题】:NSStream on Background didn't call 【发布时间】:2010-12-18 06:35:32 【问题描述】:
- (void)applicationDidEnterBackground:(UIApplication *)application 
    NSOutputStream *outputStream;
    NSInputStream *inputStream;

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^

        [inputStream setDelegate:self];
        [outputStream setDelegate:self];

        [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop]
                               forMode:NSRunLoopCommonModes];
        [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop]
                                forMode:NSRunLoopCommonModes];

        [app endBackgroundTask:bgTask];

        bgTask = UIBackgroundTaskInvalid;

    );

Input,OutputStream 委托没有调用。我做错了什么。

【问题讨论】:

【参考方案1】:

你是否通过以下方式运行了当前的运行循环?

 do 

    [[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]];
   while (done == TRUE);

【讨论】:

【参考方案2】:

您似乎省略了流的初始化,例如

NSInputStream *inputStream = [NSInputStream inputStreamWithURL: myURL];
NSOutputStream *outputStream = [NSOutputStream outputStreamToMemory];

【讨论】:

以上是关于背景上的 NSStream 没有调用的主要内容,如果未能解决你的问题,请参考以下文章

NSStream 和 Sockets,未调用 NSStreamDelegate 方法

NSOutputStream 自 iOS 8.3 更新后停止工作

如何在 NSStream 中使用委托?

如何在 NSStream 中使用委托?

iPhone:使用 NSStream 捕获连接错误

NSStream实现发送和接受数据