草庐IT

thread_handler

全部标签

ios - : This application is modifying the autolayout engine from a background thread如何解决

当代码的某些部分正在从主线程以外的其他线程更改UI项目时,此错误将记录到控制台。但我如何才能找到它在哪里执行此操作? 最佳答案 “此应用程序正在从后台线程修改自动布局引擎”的主要问题是,它似乎在实际问题发生后很长时间才被记录下来,这使得故障排除变得非常困难。我通过创建三个符号断点设法解决了这个问题。调试>断点>创建符号断点...断点1:符号:-[UIViewsetNeedsLayout]条件:!(BOOL)[NSThreadisMainThread]断点2:符号:-[UIViewlayoutIfNeeded]条件:!(BOOL)[N

android - java.lang.RuntimeException : Handler (android. os.Handler) 向死线程上的 Handler 发送消息

在我的应用中,我使用IntentService发送短信。@OverrideprotectedvoidonHandleIntent(Intentintent){Bundledata=intent.getExtras();String[]recipients=null;Stringmessage=getString(R.string.unknown_event);Stringname=getString(R.string.app_name);if(data!=null&&data.containsKey(Constants.Services.RECIPIENTS)){recipients=

android - java.lang.RuntimeException : Handler (android. os.Handler) 向死线程上的 Handler 发送消息

在我的应用中,我使用IntentService发送短信。@OverrideprotectedvoidonHandleIntent(Intentintent){Bundledata=intent.getExtras();String[]recipients=null;Stringmessage=getString(R.string.unknown_event);Stringname=getString(R.string.app_name);if(data!=null&&data.containsKey(Constants.Services.RECIPIENTS)){recipients=

ios - 是否可以调用 performSelectorOnMainThread : after beginBackgroundTaskWithExpirationHandler is called and the application is in background?

我正在启动后台任务,如下所示:UIApplication*application=[UIApplicationsharedApplication];_backgroundTask=[[UIApplicationsharedApplication]beginBackgroundTaskWithExpirationHandler:^{[applicationendBackgroundTask:_backgroundTask];_backgroundTask=UIBackgroundTaskInvalid;}];应用程序被发送到后台,一切正常。一段时间后,满足特定条件,某些对象最终执行此代码

iOS : Background Thread Exceptions Not Crashing

我没有找到符合我经验的文档。我想要的是一种在后台线程中处理未捕获异常的好方法。这种“方式”应该让应用程序崩溃,但在崩溃之前执行一些非常基本的操作(例如,将值保存到UserDefaults以便下次启动时可以检查它;加上日志记录)。在主线程上,我刚刚设置了一个uncaughtExceptionHanlder并且工作正常。但是,在后台线程上-作为NSOperationQueue上的NSOperation执行-发生任何异常但不退出应用程序:崩溃。该应用程序继续在损坏的状态下运行。但是,线程编程指南指出:SettingUpanExceptionHandlerIfyourapplicationca

ios - 如何在生产应用程序中找到 Crashed : com. apple.main-thread 的根本原因?

我有一份来自Crashlytics的报告:Thread:Crashed:com.apple.main-thread0libobjc.A.dylib0x000000019503fbd0objc_msgSend+161CoreFoundation0x00000001836e5458CFRelease+5242CoreFoundation0x00000001836f1a18-[__NSArrayMdealloc]+1523libobjc.A.dylib0x0000000195045724(anonymousnamespace)::AutoreleasePoolPage::pop(void*)

ios - Xcode 线程 1 : Is it always main UI thread?

Xcode在调试导航器中显示线程。它们被编号:线程1、线程2等我注意到我总是在线程1中。假设它是主UI线程是否正确?我使用像Facebook和AFNetworking这样的库/SDK,它们有回调和委托(delegate)。但线程安全性并不总是得到正确记录。 最佳答案 我不记得是哪个,但在一个WWDC视频中(我想是从2011年开始),我听到一位工程师提到UIKit内部假设线程1是UI。所以是的,这不是“简单的”最佳实践,我认为存在具体的技术依赖性。就具体文档而言,我不容易找到“官方”声明;但我认为这是因为它比这更基础。比如这种随便提到

ios - 枚举键和对象使用 block : can I be sure it is called on the same thread?

最近我在使用enumerateKeysAndObjectsUsingBlock:,今天当我的一位同事指出可以从单独的线程调用此枚举方法并且我的代码可能无法按预期工作时,我犹豫了。他甚至建议我应该使用快速枚举。问题是我真的很喜欢enumerateKeysAndObjectsUsingBlock:并且不喜欢快速枚举,因为它在字典方面的性质。我的方法如下所示-(NSArray*)someMethod{__blockNSMutableArray*myArray=[NSMutableArrayarray];[self.myDictionaryenumerateKeysAndObjectsUsin

ios - Facebook iOS SDK 3.5.1 : openActiveSessionWithReadPermissions - completion handler called twice

我有一个分享链接的按钮。我基本上使用两个电话:openActiveSessionWithReadPermissions和requestNewPublishPermissions。所以这是按钮操作:-(IBAction)shareFacebookButtonAction:(id)senderif(![[FBSessionactiveSession]isOpen]){NSArray*permissions=@[@"read_friendlists",@"email"];[FBSessionopenActiveSessionWithReadPermissions:permissionsall

iphone - beginBackgroundTaskWithExpirationHandler 永远不会被调用

我有一个在后台播放音频的应用程序。我正在尝试使用beginBackgroundTaskWithExpirationHandler在当前轨道结束时跳到下一首轨道。下面是播放状态改变时调用的代码。它从不记录“beginBGcalled”,即使同一方法中的其他代码在后台成功实现。UIApplication*app=[UIApplicationsharedApplication];bgTask=[appbeginBackgroundTaskWithExpirationHandler:^{[selfffwButtonPressed:ffwButton];NSLog(@"beginBGcalled