KSThreadProxy提供了几种在不同的线程上执行代码的便捷方法,适用于block的前世和后世。
向不同线程上的对象发送消息
[[object ks_proxyOnThread:thread] doThing];
请注意,您可以将nil传递给自动将目标设置为main thread。该调用是阻塞的,因此您甚至可以正确地收到返回值。或者,您可以使用ks_proxyOnThread:waitUntilDone:
明确地进行异步操作。
dispatch_sync
有一个烦恼:当用于使用串行队列自己为目标时,会导致死锁。KSThreadProxy添加了一些便捷方法,在非死锁方式下将块弹跳回特定线程,例如-[NSThread ks_performBlockAndWait:]
我是Mike Abdullah,来自Karelia Software。在Twitter上关注@mikeabdullah。
有关代码的问题应在https://github.com/karelia/KSThreadProxy上提交为问题,或在Twitter上发消息给我。
除了Foundation之外没有其他依赖。实际的线程代理支持回到OS X v10.5。使用块的方法需要块编译器支持,这在实践中意味着OS X v10.6。
版权所有 © 2008 Karelia Software
特此许可,免费转让,任何获得此软件及其相关文档文件(“软件”)副本的人,可以不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、转授许可和/或出售软件副本,并允许提供软件的人以本项许可规定的方式这样做
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对因软件或其使用或操作而产生的任何索赔、损害或其他责任承担责任,无论此类责任基于合同、侵权或其他方式,无论责任产生于、源于还是与本软件或其使用或操作有关。
将KSThreadProxy.h
和KSThreadProxy.m
添加到您的项目中。理想情况下,将此仓库作为子模块,但毕竟,这是您的代码库,做您想做的事情。