- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个连续打开的 TCP 连接,用于与外部设备通信。通信管道中发生了很多事情,导致 UI 有时变得无响应。
我想将通信放在一个单独的线程中。我了解 detachNewThread
以及它如何调用 @selector
。我的问题是我不确定如何将它与类似 NSStream
?
最佳答案
您可能更愿意使用 Grand Central Dispatch ('GCD'),而不是手动创建线程和管理线程安全问题。这允许您发布 block ——它们是代码包和一些状态——在远离主线程和操作系统认为最合适的任何地方执行。如果您创建一个串行调度队列,您甚至可以确定,如果您在旧 block 尚未完成时发布一个新 block ,系统将等待它完成。
例如
// you'd want to make this an instance variable in a real program
dispatch_queue_t serialDispatchQueue =
dispatch_queue_create(
"A handy label for debugging",
DISPATCH_QUEUE_SERIAL);
...
dispatch_async(serialDispatchQueue,
^{
NSLog(@"all code in here occurs on the dispatch queue ...");
});
/* lots of other things here */
dispatch_async(serialDispatchQueue,
^{
NSLog(@"... and this won't happen until after everything already dispatched");
});
...
// cleanup, for when you're done
dispatch_release(serialDispatchQueue);
GCD 快速介绍 is here , 苹果的more thorough introduction也值得一读。
关于ios - 线程 NSStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9066266/
我想使用 nsstreams 发送和接收一些数据。我不想让我的代码如此困惑,所以我想知道: 我是否需要保留对 NSStream 的强引用,或者 [NSStream scheduleInRunLoop:
我正在将文件上传到服务器,使用 NSStream API 分块读取。我正在尝试显示一个显示上传进度的进度条。我无法找到可靠的解决方案来确定读入文件的字节数。更改文件和 block 大小,我仍然不断获取
我真的不能理解这个事件。 我希望在发送队列(或类似内部结构)发送完先前写入的数据包后调用它。 这是正确的假设吗? 我正在通过Multipeer连接开发视频流,我想使用此属性来决定是否应该放下摄像机框架
我有一个应用程序在另一个线程上使用 NSStream 连接到服务器。如果用户决定注销,应用程序也会关闭连接。问题是我永远无法在用户断开连接后成功关闭流或线程。下面是关于如何为网络创建线程并尝试关闭流的
在我正在开发的 iPad 应用程序中,我需要将网络处理放在一个单独的线程上,因为它偶尔会阻塞应用程序的 UI。目前,我已经创建了一个 Connection 对象,所有网络逻辑都在其中进行( NSStr
我正在尝试在 iOS 上编写 telnet 客户端,但无法正确设置流。我认为它们可以工作,但每次触发委托(delegate)方法时我都会得到空缓冲区。 以下是我设置流的方式: self.manager
我在 iOS 中进行客户端-服务器通信已经有一段时间了,但我遇到了一个我无法理解的问题。 我写了两个基本函数:一个向服务器发送数据,另一个从服务器接收数据。每个都有一个名为 timeout 的参数,它
我有一个连续打开的 TCP 连接,用于与外部设备通信。通信管道中发生了很多事情,导致 UI 有时变得无响应。 我想将通信放在一个单独的线程中。我了解 detachNewThread 以及它如何调用 @
在Ray Wenderlich tutorial on sockets为了从 Objective-C 中的输入流中读取字节,我们做了 uint8_t buffer[1024]; int
我在连接到服务器的 iphone 应用程序中有一个 NSInputStream 和一个 NSOutputStream。我能够毫无问题地将数据读取和写入套接字。问题是我有一个断开连接按钮,当我尝试在其中
如何同步调用NSStream获取结果?? 目前我在其委托(delegate)方法之一中收到异步回调 `(void)stream:(NSStream *)theStream handleEvent:(
全部, 我已经通过注释、断点等方式将它运行到这一点。程序在标记的代码处崩溃。 -(void) initNetworkCommunication { CFReadStreamRef readSt
我编写了一个程序,使用 Apple 流编程指南中概述的 NSStream 协议(protocol)连接到给定 IP 上的服务器。数据的连接和传输工作完美,但是如果用户指定了错误的 IP 并且程序尝试打
我有一个使用 NSStream 进行连接的客户端-服务器应用程序。有时,当尝试打开连接时,连接的一侧在第一次尝试发送消息时会收到 NSStreamEventEndEncountered。 我使用 CF
我正在尝试为 NSStream 编写包装器之类的东西,以使我的生活更轻松。我只想知道什么时候建立连接,什么时候关闭,写一些数据获取接收到的数据。所以我在想这样的事情: 标题: @interface S
我需要从家庭自动化服务器获取设备列表的状态。我要查询的设备在一个数组中。 我正在尝试循环遍历该数组,对于每个设备,我正在向服务器发送数据。我遇到的问题是服务器只收到一个包含我的 3 个命令的字符串。
一切都按预期工作,只是一步一步抛出调试器,否则我会得到 EXC_BAD_ACCESS。我想我需要在某个地方延迟或等待(最好)某件事。 // 1) Create streams(input/output
我正在使用 Objective-C 创建一个基于套接字的 iOS 应用程序,现在我的要求是同时连接到两个服务器。 我正在使用 NSInputStream 和 NSOutputStream,我能够连接到
使用ExternalAccessory与蓝牙设备通信,我使用EASession提供的输入和输出NSStreams向其发送消息。 在Apple的EADemo示例中,它将两个流调度到主线程的运行循环。但是
我正在使用 NSStream 通过 MCSession 发送大量的 UIImage 数据。 当我得到字节时 - (void)stream:(NSStream *)aStream handleEvent
我是一名优秀的程序员,十分优秀!