ios - mainRunloop 上的 NSURLConnection 不工作

标签 ios iphone macos nsurlconnection nsrunloop

我在使用 NSURLConnection 实例时遇到了这个问题,在使用任意数量的实例后,它们会停止工作并且从不调用其delegate 的方法。它们的工作方式如下:

[[NSRunLoop mainRunLoop] addPort:self.port forMode:NSDefaultRunLoopMode];
[_connection scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
[self.connection start];
[[NSRunLoop mainRunLoop] run];

事实上,它们在使用了一些之后就停止工作了,这让我认为它们耗尽了任何资源(可能是主 runLoop 上的端口或其他资源)。

看起来一切都清理得很好

[_connection cancel];
[_connection release];

[[NSRunLoop mainRunLoop] removePort:self.port forMode:NSDefaultRunLoopMode];
[_port release];    
[super dealloc];

你们觉得这种方法有什么问题吗?有什么想法他们可能会停止工作吗?

最佳答案

根据 Apple's documentation on NSRunLoop :

运行循环模式

NSRunLoop defines the following run loop mode.

extern NSString* const NSDefaultRunLoopMode;
extern NSString* const NSRunLoopCommonModes;
Constants

NSDefaultRunLoopMode

    The mode to deal with input sources other than NSConnection objects.

我注意到您已经将 NSDefaultRunLoopMode 用于看起来像是 NSConnection 对象的对象,尽管没有看到您的其余代码我真的只是推测。您可以尝试使用的另一件事是 performSelector:onThread:withObject:waitUntilDone:,因为您的某个连接可能陷入竞争状态。

关于ios - mainRunloop 上的 NSURLConnection 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21164955/

相关文章:

c# - Xamarin Forms Tap 手势识别器 Ios 不起作用

iphone - iPhone编程如何给UIImageview添加注解

iphone - ios 对音频文件的音频效果

objective-c - 带有部分的基于 View 的 NSTableView

objective-c - 在 Cocoa 中声明对象时,我应该将它们设置为 nil 吗?

ios - 即使设备在 objective-c 中水平旋转,如何始终以纵向模式加载 UIViewController?

iOS 位置管理器多次启动

ios - 如何在 Swift 中更改 PFUser 密码?

jquery - $(window).width() 在 iPhone 的纵向/横向模式下返回相同的值

macos - 如何制作在全屏模式下消失的 float 面板