问题标签 [nsthread]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - iPhone:使用 NSThread 加载数千张图片的最佳实践?
我正在尝试使用 NSThread 加载数千张图像,但性能很慢。
使用 NSThread 下载数千张图像的最佳做法是什么?
谢谢,
吉姆。
iphone - 何时释放/保留传递给辅助线程的对象?
我使用以下代码将对象传递给辅助线程:
我的问题是,自动释放是处理该对象释放的正确方法吗?一旦它被传递到辅助线程,我会保留它并在我不再需要它时释放它。
但是,自动释放是否有可能在辅助线程有机会保留它之前释放对象?我是否必须为此创建一个 ivar?,以便我可以在 performSelectorOnMainThread 中释放对象?登录后我不再需要该对象,因此 ivar 似乎不是正确的方法。处理这个问题的最佳方法是什么?谢谢你。
-奥斯卡
iphone - NSThread什么时候返回一个释放的对象?(苹果手机)
我有一个内存错误,似乎可以归结为线程中发生的事情。我在解决这个问题时遇到了困难。
我有一个 UIViewController,当它处于活动状态时,即用户正在使用它的视图时,它会从 NSThread 中的 Web 服务中检索更新。
这是每 3 分钟完成一次,此延迟由以下项控制:
该timerDone
方法现在启动检索 Web 服务数据的 NSThread 并performSelector
再次发送消息。这是一个“检查更新、填充视图、关闭一切、重复”的小程序,效果很好。
现在,用户当然可以突然点击一个按钮来加载第二个 UIViewController。发生这种情况时,我会打电话:
并在方法中进行清理dealloc
。
我现在的问题是:如果 NSThread 正在运行,而用户更改视图并开始解构这个作为 NSThread 起点的对象,会发生什么?
我是否应该保留一个 BOOL 来告诉我 NSThread 是否仍然处于活动状态,如果是这样,如果是这种情况,如何处理 NSThread。
线程是这样完成的:
objective-c - NSThread、AsyncSocket 和对象释放
我有一段使用 AsyncSocket 但将其移动到单独的运行循环的网络代码。我正在使用以下代码创建此运行循环:
这是我的 _workerLoop 的样子(他们都在同一个班级):
现在,根据文档, NSThread 将保留目标,并且由于该线程只会在 AsyncSocket 断开连接时终止,因此在套接字断开连接之前无法释放和释放该对象。
我该如何解决这个问题,或者我做错了什么?
cocoa - NSURLConnection 性能
我目前正在使用 NSURLConnection 在我的应用程序中下载一些图像。在通过这个实现之前,我在 NSThread 中通过 NSData(dataWithContentOfURL) 实现了它。但是我想在下载图片的时候取消,所以我把它改成了NSURLConnection。
但它发生了其他问题。更改后性能非常低。例如,在 NSThread(NSData async) 下载图像至少需要 5 秒,但是在 NSURLConnection(async) 有超过 2 或 3 倍!
我可以提高性能吗??如何??
(* 对我对 NSData(dataWithContentOfFile)的问题感到抱歉。正确的问题是 dataWithContentOfURL)
iphone - 无限期地保留一个包含 NSTimer 的 NSThread?(苹果手机)
我的应用中有一些网络服务数据需要每 3 分钟更新一次。我尝试了一些方法,但上周在这里得到了一个非常好的建议,我不应该每 3 分钟建立一个新线程,然后尝试释放并同步所有不同的部分,以避免内存错误。相反,我应该有一个始终在运行的“工作线程”,但只有在我要求它时才进行实际工作(每 3 分钟一次)。
由于我的小型 POC 现在可以工作,因此我在该applicationDidFinishLaunching
方法中生成了一个新线程。我这样做是这样的:
好的,这将以秒为单位的更新间隔初始化“BackgroundUpdate”对象。在更新程序内部,现在只是这样:
我以前从未使用过这样的线程。我一直在“设置 autoReleasePool,开始工作,让你的 autoReleasePool 耗尽,然后再见”。
我的问题是,一旦initWithTimerInterval
运行NSThread
完成,它就会返回 updateModel 方法并排空其池。我想这与 NSTimer 有它自己的线程/运行循环有关吗?我希望线程继续让该testIfUpdateNeeded
方法每 3 分钟运行一次。
那么我将如何让这个 NSThread 在我的应用程序的整个持续时间内保持活动状态?
感谢您提供的任何帮助/建议:)
cocoa - 运行代码一段时间并在必要时终止
我正在使用脚本桥从我的可可应用程序中查询 iTunes。有时 iTunes 会弹出一个窗口(例如,如果 ipod 需要更新等),当该弹出窗口打开时,我无法从 iTunes 获取任何信息。因此,如果我在处于这种状态时从 iTunes 请求信息,我的应用程序将完全锁定,直到该弹出窗口被关闭。
所以我需要某种机制,我可以在一个单独的线程中向 iTunes 询问一些简单的事情,看看我是否可以从它那里得到响应......如果那个单独的线程在短时间内没有收到响应,我的主要线程只会杀死该线程,因此知道在那个特定时间不查询 iTunes。
任何想法如何创建这样的机制?我搜索了杀死线程的方法,但没有找到任何方法。
iphone - calling selector with two arguments on NSThread issue
I'd like to make a Thread with multiple arguments. Is it possible? I have the function:
And I want to call this function as a selector:
How to pass two arguments on withObject parameter on this detachNewThreadSelect function?
Is it possible?
iphone - 当线程被取消时,它的内存会发生什么?
我正在编写代码来检查是否存在网络连接。简而言之,我想要发生的事件的顺序是这样的:
- 用户从 Web 服务请求信息。
- 计时器启动,并每秒检查是否存在连接。如果没有,请提出意见。
- 当信息全部从网络服务接收到时,2中的定时器结束。
据我了解,在加载 Web 服务的同时运行计时器需要一个带有计时器的新线程。我了解如何做到这一点并且很好。据我了解,要结束该线程,我调用 [thread cancel];。我如何从该线程中处理内存管理。里面有一个计时器,除此之外。
我的另一个线程自我终止,当它终止时,它会释放它的所有内容。有没有办法通过取消来做到这一点?谢谢。
iphone - 从次线程访问实例属性(iPhone-SDK)
我有一个具有 NSDictionary 属性的类。在这个类中,我调度另一个线程来处理 NSXMLParser 处理。在我的 -didStartElement 中,我访问类中的字典(将 XML 中的元素与字典中的元素进行比较)。
在这一点上,我得到了未定义的结果。使用 NSLog(我在 XCode 调试方面并不先进),我发现它在访问 NSDictionary 时会爆炸。我尝试只是迭代字典并将键/值转储到 didStartElement 中,并且每次都会在不同的键处炸弹。
我唯一能得出的结论是,我在从辅助线程访问主线程属性方面所做的事情并不符合犹太教规。我对多线程有些陌生,并且不确定最好的协议是从其他线程安全访问属性。
谢谢大家。