问题标签 [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 应用程序中的线程之后调度线程
我想在线程完成后安排一个线程。
是否可以 ?如何?
例如(指定我的需要)
objective-c - Objective-C 中的 NSThread 错误
我收到此错误
bool _WebTryThreadLock(bool), 0x1b53d0: 试图从主线程或web线程以外的线程获取web lock。这可能是从辅助线程调用 UIKit 的结果。现在崩溃...
这是因为什么?
谢谢
iphone - UITabBar 外观问题 + NSThreads
尝试将 UITabBar 添加为 AppDelegate 窗口的子视图时遇到问题。上面的链接显示了屏幕混乱状态的屏幕截图。
结果是不可预测的。在这张图片中,只有 UITabBarItem 的标题受到影响,但有时 TabBar 背景不显示(因此我们可以看到窗口的背景)。有时 NavigationBar 也会受到影响(图中未显示)。
当我启动应用程序时,我首先要检查是否有网络连接,所以它被称为一个方法(verifyNetworkAvailability:),它将在与主线程不同的线程中运行。这样做是为了不冻结应用程序。
我想知道是否可以以这种方式添加 tabBarController.view(通过在主线程以外的线程中完成的方法调用)。
提前致谢
uitableview - 线程安全的 NSMutableArray 问题
我正在开发一个 RSS 阅读器,它使用 NSMutableArray ( _stories ) 来存储 RSS Feed 的内容。该数组被应用程序中的两个不同线程使用,并且可以在两种情况下同时访问,因为:
- 它是 UITableViewController 的数据源(读取它的内容并向用户显示所需的信息)
- XMLParser 使用它(从 Internet 下载内容,解析 XML 数据并将内容添加到其中)。
一些代码如下所示:
在 UITableViewController 类中
在 XMLParser 类中
如果用户想要从 RSS Feed 加载“更多帖子”,我将开始另一个解析操作,将_stories数组作为对解析器的引用,它将其他“帖子”附加到数组中。解析结束时,调用 UITableViewController 方法reloadData,然后更新 UITableView。
如果用户在解析运行时向上/向下滚动 UITableView 怎么办?UITableViewController 是否会尝试同时访问_stories数组(以创建单元格)并可能使应用程序崩溃(它很少发生但会发生)?
我想到了使用 @synchronized 块的想法,但我不太确定我必须把它准确地放在哪里(在代码的许多地方都可以访问_stories数组)。另一个问题是:我必须在哪里处理 @synchronized 块可能引发的异常?这可能会导致大量冗余代码。
我也想在没有“非原子”的情况下使用@property,但我认为它不太适合这个问题。
知道如何解决这个问题吗?提前致谢。
iphone - NSThreaded 设计中的委派?(苹果手机)
我在我的应用程序中使用了大量非常小的 Web 服务,并且我已经走了几条无法按预期扩展或工作的道路。
我正在考虑的设计方法:viewController 的任务是从一般 webServicesClass 中请求一组数据,这个任务在一个新的 NSThread 中启动 -> 这将实例化一个仅检索 xml 并将其返回给webServicesClass -> webServicesClass 现在实例化一个对象,该对象只能解析来自该特定 Web 服务的一些 XML。然后解析器返回一个不错的 Entity 对象给 webServiceClass。WebserviceClass 现在需要通知 viewController 这个数据。
viewController 实现了一个 webServiceClassDelegate 和一些委托方法,以查看 Web 服务请求是否按计划进行。例如 -(void)aWebserviceFailed 和 -(void)aWebserviceSuccess。
0.5由于运行的WebserviceClass是不同的NSThread,在父对象的主NSThread上调用委托方法会不会有问题?
1.0我认为这个设计是合理的,因为它完全封装了不同类中Entity的检索、解析和返回。但是,我将不得不为每个不同的 Web 服务编写委托方法并在每个步骤中实现委托协议。即从底层开始,WebserviceClass 必须为检索 XML 的对象(start、fail、success)、解析 XML 的对象(start、fail、success)和 WebserviceClass 都实现委托方法。将这些响应中的每一个委托给必须再次实现来自 WebserviceClass 的委托方法(开始、失败、成功)的 viewController。有没有更简单的方法来做到这一点?
我有一些设计模式经验,但不是来自像 Objective C 那样一致地使用委托的语言。在 AS3 或 Java 中,我会有一些事件可以通过对象冒泡并通知正在监听更改的人。在我读过的所有目标示例代码中,我只看到 NSNotifications(相当于 AS3 或 Java 的“事件”)使用了 0.1% 的时间。
我所描述的设计将给我一些可以完美地扩展到许多 Web 服务的东西,并让我完全控制潜在错误/异常发生的位置,但似乎需要大量代码才能获得这种松散耦合。
1.1或者我应该完全接受委托方法并开始工作:)
感谢您提供的任何指示或帮助。我不要求源代码或类似的东西,更多的是“在你刚刚描述的日常情况下,这被认为是 Objective C 中的最佳实践”:)
objective-c - NSThread 对象保留了两次?
我有一个派生自的类NSThread
:
在其他地方(在 C++ 函数内),我创建了一个实例:
我的理解是,retain-count 现在应该是 1。在另一个 C++ 函数中,我想停止并释放线程:
然而该dealloc
方法没有被调用。如果我改为:
thendealloc
被调用,这意味着保留计数为 2。但它是如何变为 2 的?
请注意,NSThread
仅提及使用时保留的文档detachNewThreadSelector:toTarget:withObject:
。
iphone - 下载时停止 NSThread
我有一个 iPhone 应用程序,我在其中显示一个从 RSS 提要加载的表格视图。加载视图后,我调用此方法在新的 NSThread 中运行:
它工作正常,但是如果用户在下载或解析 xml 时离开视图,我希望线程停止运行,但是如何在不泄漏内存的情况下阻止它运行?此外,如果它正在运行 -initWithContentsOfURL: 方法,而我希望它停止,我将如何停止该方法?
iphone - 使用 performSelectorInBackground 运行加载指示器
我有这样的代码:
这工作正常,但我担心线程安全。我没有在第二个线程中分配内存,但 smth 告诉我这太简单了:)
iphone - NSAssert 在线程中的使用
我正在尝试在NSAssert
整个 iPhone 应用程序中使用,以便如果发生意外情况,应用程序会快速失败并在崩溃日志中显示有意义的消息而崩溃。
如果失败发生NSAssert
在主线程上,这可以正常工作,因为NSInternalInconsistencyException
默认情况下它会引发未捕获并停止执行。但我也在后台线程中进行处理,在这种情况下NSAssert
只是中止线程,但编程继续运行。
我目前的解决方案是在主线程中捕获并重新抛出异常(在本例中为NSOperation
'smain
方法):
有没有更好的办法?也许使用自定义的 NSAssertionHandler?
我知道我可以将 Cassert
与静态注释一起使用:
但这不允许我展示实际失败的价值x
是什么。
objective-c - Objective-C NSThread 引用计数约定(保留与自动释放)
我的主程序产生一个线程,它执行以下操作:
现在,这对我来说似乎有问题,因为自动释放池可以在选择器 boonk: 完成执行之前释放,这会导致崩溃。
所以,我的下一步自然是:
这绝对是没有错误的,但是....似乎不自然。是否有一个objective-c ref 计数约定或协议来处理这种情况(跨线程无等待发布),或者第二个解决方案是否高于它的完成方式?