问题标签 [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 应用程序的活动线程。这严格用于调试目的。如果有的话,私有 API 也是受欢迎的。我知道我可以在调试器窗口中看到所有当前线程,但如果可能的话,我希望能够访问实际的 NSThread 对象。
iphone - NSRunLoop 正在接收一个奇怪的选择器;可能的比赛条件愚蠢?
我有一些线程在做繁重的工作,而我的主线程处理 UI 的东西。线程有时会回调到主线程以更新进度条。
总而言之,它不是那么稳定。我已经解决了与逻辑有关的问题,但特别是一个问题仍然存在。我有一些类似于停止按钮的代码,这意味着线程在下次检查发生的情况时不会尝试更新自身。
有时,当我按下停止按钮时,我会收到此错误:
-[NSRunLoop isEnabled]:无法识别的选择器发送到实例...
如果我在线程工作阶段结束时按下停止按钮,似乎会发生这种情况。在此期间,它并没有做太多事情,除了:
- 释放一些 OpenGL 内存
- 在主线程上调用 final 方法
- 耗尽其自动释放池
- 并返回
但坦率地说,错误信息太神秘了,我什至不知道从哪里开始。任何人都可以对 NSRunLoop 有所了解,这个“isEnabled”方法可能是什么,或者对可能出现的问题进行一般性的刺探?
objective-c - NSLog'ing 是否会改变其保留计数?因为我在这里慢慢地发疯
除了这个问题:NSRunLoop 正在接收一个奇怪的选择器;可能的比赛条件愚蠢?- 在发现 UIGestureRecognizer 正在被释放并收到一条消息的地方,我打印了我的一个 GR 的地址,以查看它是否是僵尸报告的那个。
使用代码中的打印消息,我不能再导致我最初寻找的崩溃。删除打印消息,看来我可以再次导致它。
由于我们正在处理释放/保留/释放问题,任何人都可以告诉我是否有可能打印出这个对象导致它被引用,从而避免它被释放?如果是这样,这告诉我我原来的问题是什么?发布的太多了?发布太早?
objective-c - NSInvocation 泄漏
我正在尝试设置 NSInovcation 系统以使用 performSelectorInBackground 将选择器启动到后台线程中: - 到目前为止,在实例方法 (-) 上运行系统时一切都成功,但我也想支持类方法 (+)。我已经调整了我的代码,为这两种类型的类提供了一个 invokeInBackgroundThread,除了一个问题之外,一切正常。当调用类方法时,我的控制台充斥着“autoreleased with no pool in place”消息。不知道是什么原因造成的。基于 DDFoundation 开源项目的代码如下所示。
iphone - 在后台调用委托的方法
这是我在这里的第一个问题,如果我犯了任何错误,请原谅!
在我的 iPhone 项目中,我有一个在线程中运行的方法需要很长时间才能执行(这就是它在线程中运行的原因)。
我的目标是通知调用此方法的 ViewController 此方法中的任何进展。这就是我将 ViewController 设置为类的委托的原因。
现在在昂贵的方法中,我执行以下操作:
但不幸的是,这不起作用,因为(我认为)我在后台线程中。
如何通过异步执行的方法通知委托任何更改?
iphone - 在后台加载一个 OpenGL 视图。苹果手机
我有一个渲染 3D 模型的 OpenGL 视图。它是对苹果 EAGLView 的基本修改。此视图被添加到控制器的 .view 中并使用 presentModalViewController: 显示。在用户选择显示视图之前,我想在应用程序启动时在后台线程中完成所有模型加载和 OpenGL 状态配置。这可能吗?我可以加载纹理、设置照明,并且通常只是准备好在后台线程中渲染所有内容吗?我担心的是,当我在后台设置渲染器时,主应用程序的 Cocoa 触摸部分会操纵 OpenGL 状态。当然,控制器将从主线程显示。对 OpenGl-ES 的这种理解程度不是我经常处理的事情,所以如果我的问题有任何奇怪之处,请保持谦逊 :)
objective-c - 死锁:你如何确定一个调用是否会导致 iOS 主线程的不安全绘制?
绘图/绘画应始终在 GUI 线程上完成,否则可能会发生死锁!...
你如何确定一个调用是否会导致 iOS 主线程的不安全绘制?
问题是我们得到了这样的堆栈,它们不在主线程上......
你怎么知道你是否会导致这个?当你做错事时,是否有任何调试技巧或其他技术来提醒自己。
iphone - NSThreading 提高速度
我正在开发游戏模拟游戏,并希望加快比赛模拟速度。在给定日期,可能有 50 多个匹配项需要模拟。目前我遍历每个并告诉他们模拟自己,但这可能需要很长时间。我希望
1)覆盖一个“忙碌”的屏幕
2)为每个启动一个线程
3)当最后一个线程退出时,移除覆盖层。
现在我可以做 1 和 2,但我不知道如何判断最后一个线程何时完成,因为我分离的最后一个线程可能不是最后一个线程完成。最好的方法是什么?
此外,通常使用线程以便在用户执行其他操作时可以在后台完成工作,我使用它略有不同。我的应用程序是一个核心数据应用程序,我想避免用户在模拟比赛时以其他方式接触商店。所以我大部分时间都想要单线程,但是由于 sim 引擎需要多长时间,所以在这种情况下使用多线程。如果有人对这种方法有其他想法,我很开放。
抢
iphone - iPhone 在新线程中上传
我一直在尝试在我的应用程序中实现一个后台线程来执行长途、硬移植上传的东西。
我正在使用 FBConnect SDK,它一直运行良好,但我想保持 GUI 端顺利运行,目前应用程序在开始上传之前有明显的暂停。
目前发生的事情是我将上传作业添加到队列中,然后运行“startQueue”。
这会从队列中取出第一个作业,调整图像大小并开始上传到 Facebook。
只有在发出 URL 请求时,它才开始在自己的线程中运行,并且我重新获得了 GUI 的控制权。
我想要的是能够将作业添加到队列中,然后在单独的线程中运行“startQueue”。这将立即让我重新控制 GUI。
发生的事情是我立即取回 GUI,图像在新线程中调整大小)并且 Facebook 上传开始(也在新线程中),但随后什么也没有。
在这个子线程中可以做什么和不可以做什么有某种限制吗?不允许 URL 连接吗?电话上似乎没有任何错误,我可以毫无问题地继续将作业添加到队列中,但初始上传没有完成。
init 方法创建线程...
然后添加作业方法启动它......
然后这样运行......
不使用线程(即只运行 startJob)它一切正常。当我调用 bgThread start 时,它运行完美,我得到了 Facebook NSLog,但工作永远不会完成。它甚至没有以错误结束。
感谢您提供的任何指示或提示!
奥利弗
iphone - 可可中的 NSRunLoops?
假设我有 2 个线程,一个是主线程,另一个是辅助线程。主线程使用最多,但有时(很少)我希望辅助线程根据来自主线程的调用做一些工作。大多数时候辅助线程应该休眠。现在经过一番搜索,我明白做到这一点的方法是使用 runLoops。所以我尝试阅读苹果的文档(http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html#//apple_ref/doc/uid/10000057i-CH16-SW5 )
但在我看来它非常复杂,我在那里度过了一段艰难的时光。有没有一种优雅而简单的方法来实现我所描述的?我可以运行和玩任何类似的 runLoop 代码示例吗?
谢谢