Tag: multithreading

当从不同的线程使用NSDateFormatter崩溃

我们不断得到NSDateFormatter一个随机,奇怪的崩溃。 相关的堆栈跟踪是: Program received signal: “EXC_BAD_ACCESS”. #0 0x00000005 in ?? () #1 0x0213e3c3 in udat_parse () #2 0x01d4e1ca in CFDateFormatterGetAbsoluteTimeFromString () #3 0x01d4e225 in CFDateFormatterCreateDateFromString () #4 0x003e2608 in getObjectValue () #5 0x003e2921 in -[NSDateFormatter getObjectValue:forString:errorDescription:] () #6 0x003e21cd in -[NSDateFormatter dateFromString:] () date格式化程序仍然在内存中(即不释放或损坏)。 我唯一能想到的是在崩溃时的string不符合格式,但我怀疑这会使格式化程序完全崩溃。 (事先检查格式是不重要的)。 有什么想法吗?

为什么必须在主线程上执行UIKit操作?

我想了解为什么UI操作不能使用multithreading执行。 这也是其他框架,如OpenGL或cocos2d的要求? 其他语言像C#和JavaScript怎么样? 我试图在谷歌,但人们提到一些关于POSIX线程,我不明白。

使核心数据线程安全

长话短说,我厌倦了与NSManagedObjectContext相关的荒谬的并发规则(或者说,它完全不支持并发性,倾向于爆炸或做其他不正确的事情,如果你试图跨线程共享一个NSManagedObjectContext ),我试图实现一个线程安全的变体。 基本上我所做的是创build一个跟踪它创build的线程的子类,然后将所有方法调用映射回该线程。 这样做的机制有点复杂,但其关键是我有一些帮助方法,如: – (NSInvocation*) invocationWithSelector:(SEL)selector { //creates an NSInvocation for the given selector NSMethodSignature* sig = [self methodSignatureForSelector:selector]; NSInvocation* call = [NSInvocation invocationWithMethodSignature:sig]; [call retainArguments]; call.target = self; call.selector = selector; return call; } – (void) runInvocationOnContextThread:(NSInvocation*)invocation { //performs an NSInvocation on the thread associated with this context NSThread* currentThread = [NSThread currentThread]; […]

帮助在iOS上的multithreading?

我有一个使用OpenEars和Flite库的应用程序。 问题是Flite库是资源密集型的,它冻结了我的应用程序。 我怀疑在后台线程上运行Flite会解决问题,但我不知道如何去做。 这就是说, 我如何在iOS中实现后台线程 ? 我会很感激,如果有人能指点我一些教程,分享一些示例代码,或任何一般的build议,可以帮助我解决这个问题。

如何通过iPad应用程序中的所有主动线程循环

在我创build的iPad应用程序中,我试图通过输出exception的callStackSymbols来处理未捕获的exception。 这可以用[NSException callStackSymbols] 不过,我希望能够在所有其他活动线程上看到callStackSymbols。 我知道我可以在任何线程上使用[NSThread callStackSymbols] ,但是我需要遍历所有活动线程来完成。 这可能吗?

在iOS4设备上发送大量数据的最佳做法?

我有一个应用程序需要发送数据(使用POST)到服务器。 此function必须在其中一个NavigationController子控制器上,用户应该能够离开此控制器和/或closures应用程序(只支持iPhone4 / iOS4)。 我应该使用线程/ NSOperations还是/和使用现有的asynchronous方法发送数据? 任何想法/最佳实践如何实现这一点?

iOS在主线程上执行委托和观察者调用的方法是什么?

对不起,我不确定这里有没有正确的语言,但是当方法被调用是因为它们是委托方法,或者被列为观察者的目标而调用的方法时,它们是否在主线程上执行? 我想知道是否可以在这些方法中进行UI更改,还是必须将它们包装进去 dispatch_async(dispatch_get_main_queue(), ^{ UI stuff }); TIA:约翰

iOS – 另一个线程需要将reloadData发送到mainthread

我有一个单独的线程创build一个UIView对象,将其插入到UITableView的数据源中,然后调用UITableView上的reloadData。 然而,由于它是一个单独的线程,它不能直接调用reloadData,它需要使主线程做到这一点…但你怎么告诉主线程做到这一点? 谢谢

在Unity iOS上创buildHTTP请求的方法?

我需要使用所有标准的RESTful方法发送HTTP请求,并访问请求的主体以便发送/接收JSON。 我看过, WebRequest.HttpWebRequest 这几乎是完美的,但是有些情况下,例如,如果服务器closures,GetResponse函数可能需要几秒钟的时间才能返回 – 因为它是一个同步方法 – 冻结该时期的应用程序。 BeginGetResponse这个方法的asynchronous版本似乎并不是asynchronous工作的(在Unity中),因为它仍然冻结了那个时期的应用程序。 UnityEngine.WWW# 由于某种原因,只支持POST和GET请求 – 但是我也需要PUT和DELETE(标准的RESTful方法),所以我没有更进一步的研究它。 的System.Threading 为了运行WebRequest.HttpWebRequest.GetResponse而不冻结我使用线程查看的应用程序。 线程似乎在编辑器中工作(但看起来非常不稳定 – 如果在应用程序退出时不停止线程,即使在停止时仍然在编辑器中运行),并且当iOS设备内置时因为我尝试启动一个线程(我忘了写下错误,现在我无法访问它)。 在本地iOS应用程序中运行线程,并使用桥接到Unity应用程序 可笑,甚至不会去尝试这个。 UniWeb 这个。 我想知道他们是如何pipe理的。 下面是我正在尝试的WebRequest.BeginGetResponse方法的示例, // The RequestState class passes data across async calls. public class RequestState { const int BufferSize = 1024; public StringBuilder RequestData; public byte[] BufferRead; public WebRequest Request; public Stream ResponseStream; // […]

使用ARC,是不是每个线程都有一个自动释放池是致命的?

我读过这个: 如果您在应用程序中创build了辅助线程,则需要为其提供自己的autorelease池。 Autorelease池及其包含的对象将在下文进一步讨论 在iOS 5 Developer Cookbook中。 我正在编译ARC。 我一直在创build很多后台线程,而且看起来我很好。 我的后台线程都不是长时间运行的。 所有这些对象是否会被释放,主线程的autorelease池? 或者是什么? 这就是我所做的调用后台线程: +(void)doBackground:(void (^)())block { //DISPATCH_QUEUE_PRIORITY_HIGH //dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0), ^{ dispatch_async(dispatch_get_global_queue(-2,0), ^{ block(); }); } 我应该改变它 +(void)doBackground:(void (^)())block { //DISPATCH_QUEUE_PRIORITY_HIGH //dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0), ^{ dispatch_async(dispatch_get_global_queue(-2,0), ^{ @autoreleasepool{ block(); } }); }