(异步)NSURLConnection:下面发生了什么?

2024-01-11

我知道它必须处理启动线程来发出网络请求的丑陋,然后可能调用performSelectorOnMainThread:用我的委托方法。

我知道怎么做use在进行 iOS 编程时,它效果很好。但是,我想知道如何使其在(例如)命令行实用程序的上下文中工作,其中没有具有事件处理等功能的 UIApplication。

我已经尝试过了,似乎程序在异步调用返回后立即退出,然后才能调用委托方法。我非常想更深入地了解它是如何工作的。


Per the docs http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/Reference/Reference.html#//apple_ref/doc/uid/20001697-387826,连接的委托方法在连接启动的同一线程上调用。因此,要保持该线程运行,直到连接有时间执行其操作:

int main(int argc, char *argv[])
{   
    // ...
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:del startImmediately:YES];
    CFRunLoopRun();    // Run this run loop, run!
    // ...
}

然后,当连接表明它已完成时,委托可以停止运行循环:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    // This returns control to wherever you called
    // CFRunLoopRun() from, so you can still clean up
    // or do other interesting things.
    CFRunLoopStop(CFRunLoopGetCurrent());
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    NSLog(@"Error: %@", error);
    CFRunLoopStop(CFRunLoopGetCurrent());
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(异步)NSURLConnection:下面发生了什么? 的相关文章

  • 告诉 IKImageBrowserView 不要安排预加载

    为了重写开源 iMedia 框架项目 目前有数十名开发人员正在使用 我们正在切换到 IKImageBrowserView 并且在缓存方面遇到了麻烦 看来 IKImageBrowserView 喜欢预加载 预取图像缓存 作为低优先级后台任务
  • 如何创建自定义模式 NSWindow?

    我想创建一个充当模式对话框的自定义 NSWindow 我所说的自定义是指它在窗口中有正常的用户控件 带有 确定 和 取消 按钮 该对话框将包含只读信息 并有一些复选框 安全编辑字段等 MainMenu xib 文件将具有在启动时可见的普通窗
  • ARC-- 隐式桥接

    如果我理解正确的话我们可以分类void as a C 可保留指针类型 因此 将其分配给 Objective C 对象将被隐式桥接 但是 编译器会引发需要显式桥接的错误 const void somePtr void 0x12345678 v
  • .Net Core 异步关键部分(如果在同一实体上工作)

    我需要确保通过 Web API 访问的方法不能同时通过多个调用访问 如果它在具有相同 id 的同一对象上工作 我理解使用SemaphoreSlim但一个简单的实现将锁定所有人的关键部分 但只有当该部分适用于同一实体而不是两个不同的实体时 我
  • 为什么我们不能在当前队列上使用dispatch_sync?

    我遇到了一个场景 我有一个委托回调 它可能发生在主线程或另一个线程上 并且直到运行时我才知道是哪个 使用StoreKit framework 我还需要在该回调中更新 UI 代码 该回调需要在函数执行之前发生 所以我最初的想法是拥有一个如下所
  • 如何遍历 macOS 中其他应用程序的窗口/视图层次结构?

    我试图弄清楚如何获取 只读 任何应用程序的整个窗口 视图层次结构 我使用以下方式获取所有打开的窗口的列表CGWindowListCopyWindowInfo 它还返回窗口号 kCGWindowNumber 它还通过以下方式显示根窗口的共享状
  • 从带有参数的方法名称创建选择器

    我有一个代码示例 它得到SEL从当前对象 SEL callback selector mymethod parameter2 我有一个像这样的方法 void mymethod id v1 parameter2 NSString v2 现在我
  • ObjectAL自动中断处理错误

    我一直在 SpriteKit 游戏运行时打电话 以测试中断 我正在使用 ObjectAL 文档中的示例 名为 使用 OpenAL 对象和 OALAudioTrack http kstenerud github io ObjectAL for
  • iOS自动布局:如何动态均匀地间隔项目?

    我需要均匀地间隔 X 个项目 并且项目的容器可以具有动态宽度 并且我希望第一个和最后一个项目粘在左边缘和右边缘 0 item1 itemX 0 这样无论容器有多宽 项目总是均匀分布 如何在布局约束下实现这一点 编辑 我在想 如果我可以将 i
  • 如何在 sqlite3 数据库中存储音频文件并在 iphone 中播放它们?

    我想在数据库中存储音频文件 任何支持 mp3 wav 和 iphone 的格式 并在 iPhone 上播放它们 知道如何做到这一点吗 我不知道为什么你想将音频文件存储在 SQL 数据库中 但 sqlite3 支持 BLOB 因此 将它们存储
  • 重新加载 UITableView 中的部分

    我正在编写一个应用程序 通知用户何时该服药 页面顶部的标签显示日期和tableView填充了特定日期需要服用的药物名称和时间 现在 这些部分是根据当天服用的药物数量来填充的 因此 部分的数量会随着时间的推移而动态变化 计划在该特定日期服用药
  • 举例说明为什么不建议将图像存储在 CoreData 中?

    这个问题已经被问过很多次了 我读到很多用户都说不建议将图像存储在数据库中 特别是在 CoreData 中 他们似乎都忽略了他们这样做的原因 甚至苹果文档也声明了这一点 每个人都指向那个方向 每次讨论都以这样的方式结束 好吧 你可以 但存储路
  • 如何使虚线可移动

    我用下面的代码画了一条虚线 get the current CGContextRef for the view CGContextRef currentContext CGContextRef NSGraphicsContext curre
  • 在 iPhone 模拟器中设置当前用户位置

    有没有办法在 Xcode 4 上的 iPhone 模拟器中设置当前用户位置 我希望模拟器显示除库比蒂诺之外的其他位置 是的 从模拟器的菜单中选择Debug gt Location gt Custom Location
  • 如何在 Objective-C 中编写 lambda 方法?

    如何在 Objective C 中编写 lambda 方法 Objective C 中 lambda 的概念现在封装为Blocks http developer apple com mac library documentation Coc
  • Cocoa Key Value Bindings:Controller Key的各个选项的解释是什么?

    当我使用 Interface Builder 将控件绑定到 NSArrayController 时 绑定检查器中的 Controller Key 字段下有多种选项 我理解什么是 arrangedObjects 我半理解什么是 选择 但我很想
  • 根据维基百科,为什么“call super”被视为反模式? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 Xcode 中找到特定函数(如 eclipse 的调用层次结构)的所有调用函数?

    我如何在 XCode 中找到特定函数的所有调用函数 例如 eclipse 的调用层次结构 自 XCode 4 4 发布以来 此功能就存在并称为 显示相关项目 有多种方法可以访问弹出菜单 使您可以查看所有呼叫者和被呼叫者等 最快的方法是 在代
  • macOS:以编程方式检查进程是否作为 launchDaemon 或 launchAgent 运行或从命令行运行

    我想了解我的进程运行的上下文 我想区分以下情况 它作为持久计划任务运行 launchDaemon launchAgent 它被称为按需并由 launchd 使用创建open命令行或双击 它是直接从命令行终端调用的 即 gt bin myPr
  • 将 NSData 转换为 JSON

    我有一个NSData对象 我需要将其转换为NSDictionary object NSData data 现在我需要将其转换为NSDictionary 我如何以编程方式执行此操作 注意 我保存后NSData to the NSDiction

随机推荐

  • 如何使用css3/javascript将圆分成12等份并带有颜色

    HTML div class circle p class innerCircle p div CSS circle width 450px height 450px border top 30px solid 416fa6 border
  • C 编程输入一个除以 10 的列表

    我正在尝试编写一个程序 其中用户输入随机数 程序输入从 0 到 9 的列表 例如 假设用户输入数字 12 那么屏幕应如下所示 0123456789012 其中末尾的 2 表示第 12 个数字 我已经尝试过这个 但它给了我一个无限循环 我不知
  • JRuby/Windows 和(本机)扩展如何区分它们?

    我尝试将 EventMachine 等与 JRuby 一起使用 我收到有关本机扩展的错误 我相信这是由于 Java 的限制 我认为我使用 Windows 的事实使问题进一步复杂化 如果有一些澄清 我们将不胜感激 哪些扩展可以 不能与 JRu
  • 为什么用户控制类访问从另一个线程不安全?

    正如标题所示 为什么用户控件类访问从另一个线程不安全 我听说有一种方法可以启用跨线程访问 我正在考虑这样做 有想过为什么我不应该这样做吗 看看这个 http msdn microsoft com en us library ms171728
  • django聚合:求和然后求平均值

    使用 django 的 ORMannotate and or aggregate 我想根据一个类别字段进行汇总 然后对每个日期的类别值进行平均 我尝试用两个来做annotate 声明但得到了FieldError 我正在这样做 queryse
  • 在函数中使用关键字 - PHP [重复]

    这个问题在这里已经有答案了 可能的重复 在 PHP 5 3 0 中 函数 Use 标识符是什么 一个理智的程序员应该使用它吗 https stackoverflow com questions 1065188 in php 5 3 0 wh
  • Ruby 未定义方法 `+' for nil:NilClass (NoMethodError)

    红宝石新手 接收错误 nil NilClass 的未定义方法 NoMethodError 我不明白为什么我会收到这样一个简单的递增值任务的错误 但是 该错误可能是由其他原因引起的 原因是什么 class LinkedList class N
  • IP地址和端口号一起可以唯一标识进程ID吗?

    IP地址和端口号一起可以唯一标识进程ID吗 我正在寻找一种方法来获取相应的进程ID 给定IP地址和端口号 但我不确定这样的ip 端口对是否可以唯一标识一个pid 不必要 如果在进程中打开 接受套接字 然后分叉 则子进程也打开套接字 因此 I
  • 管道与重定向到进程

    寻找一些bash专家解释 下一个之间的确切区别是什么 command1 command2 例如经典管道 其中 command1 的 stdout 被重定向到 command2 的 stdin 例如 bash fork 自己两次 更改文件描述
  • 让私有方法返回 String 而不是传递 StringBuilder 的优点和缺点是什么[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在多台机器和硬盘上使用 nginx 提供静态文件

    我有一个项目 它将在部署后存储大量媒体内容 项目使用Python Django 也通过Gunicorn和Supervisor运行 对于静态文件 我将使用 nginx 我通过以下方式进行了基本设置本文 http michal karzynsk
  • 如何从其他类访问jFrame的组件?

    我有两个类 第一个是 NewJFrame java 它的代码是 package javaapplication10 import java awt Label public class NewJFrame extends javax swi
  • 在 Flask 中创建不返回响应的视图函数

    我对网络编程和 Flask 相当陌生 最近我尝试创建的网站遇到了问题 我目前有一个 jquery 过程 它将 post 请求发送到 Flask 中的视图函数 该函数只是增加我的数据库中的一个值 并且我实际上没有必要在增加该值后返回响应 然而
  • 如果开关盒掉落,如何使 MSVC 发出警告或失败?

    如果我的 switch 语句之一有一个不会中断的情况 我希望收到警告 错误 这可能吗 switch i case 1 cout lt lt one forgot to break here I want to be warned about
  • .pem、.cer 和 .der 之间有什么区别?

    两者有什么区别 pem cer and der 据我所知 cer包含公钥 是否有任何开放框架可用于使用此公钥加密我的数据 pem cer and der都是可能包含 X 509 v3 证书的文件的文件扩展名 The der扩大 DER 是对
  • iPhone Flash 中的不同屏幕尺寸? (出现黑条)

    我是整个编码世界的新手 而 ActionScript 3 是我第一次真正的体验 如果我不能立即理解您的答案 很抱歉 我在 AIR for iOS 中使用 Adob e Flash CC 构建了一个 iPhone 应用程序 所有代码都位于时间
  • Angular 6:如何使用 Angular Material 隐藏无线电圆圈并使用 NgStyle 来检查答案?

    我在两件事上遇到了麻烦 隐藏 mat radio group 的圆圈 如果选中 请将 p 标签背景更改为蓝色 我尝试使用 ng deep 覆盖 css 属性并将颜色更改为白色 尝试配置 invisibility hidden 但没有成功 另
  • 导航属性“SenderId”不是类型“Conversation”上声明的属性

    当我尝试更新数据库时 出现以下错误 导航属性 SenderId 不是类型 Conversation 上声明的属性 验证它是否未从模型中显式排除并且它是有效的导航属性 Edit 我认为问题在于对话和用户之间的映射关系 因为对话和用户以两个一对
  • DTLS 和 TLS 之间的区别

    TLS 和 DTLS 之间的功能区别是什么 使用 TLS 与 DTLS 时应用程序流程 协商有何不同 基本上 DTLS 是在数据报 UDP DCCP 等 上构建 TLS DTLS 有意与 TLS 类似 只不过 DTLS 必须解决两个问题 数
  • (异步)NSURLConnection:下面发生了什么?

    我知道它必须处理启动线程来发出网络请求的丑陋 然后可能调用performSelectorOnMainThread 用我的委托方法 我知道怎么做use在进行 iOS 编程时 它效果很好 但是 我想知道如何使其在 例如 命令行实用程序的上下文中