是UImage.AsPNG()
线程安全吗?当从Xamarin.iOS 6.3.5.43中使用UImage.AsPNG()
从一个单独的线程,我得到MonoTouch.UIKit.UIKitThreadAccessException
。 从Apple文档中,我看不到需要在主线程上执行此方法。 我没有在6.2分支中得到这个警告。是UImage.AsPNG()线程安全吗?
2
A
回答
3
是的,它是线程安全的,它已被固定在recently released Xamarin.iOS 6.2.7.
的问题是,我们必须与有关线程安全的API苹果工程师的讨论,我们犯了一个错误,当我们通过去他们给我们的信息。有关更多信息,请参阅bug report。
1
从苹果的文档我看不到所需此方法可以在主线程
苹果不指定每个方法的线程安全性UIKit
上执行。 this disclaimer在主框架参考中给出:
注意:大多数情况下,UIKit类只能在应用程序的主线程中使用。对于从UIResponder派生的类或涉及以任何方式操作应用程序的用户界面的类尤其如此。
回到原来的问题 - UIKitThreadAccessException
由MonoTouch调试构建引发。它的目的是作为一个检查/调试工具,以确保你没有在辅助线程上做UIKit的东西。
因为从iOS 4开始,某些UIKit方法(主要是涉及绘制到图形上下文的方法)变为线程安全的,因此MonoTouch不会抛出此异常的方法白名单,这在MonoTouch文档中可用。
我不能说UIImage.AsPNG()
是否是线程安全的......我不认为它是,但如果我错了 - 或者你想冒险 - 你可以通过--disable-thread-check
标志来禁用MonoTouch的自动UIKit后台线程检查。 This blog post可能会有所帮助。
相关问题
- 1. 是java.sql.Connection线程安全吗?
- 2. 是CreateChildContainer()线程安全吗?
- 3. 是Thread.getStackTrace()线程安全吗?
- 4. 是DocumentBuilder.parse()线程安全吗?
- 5. 是javax.sql.DataSource线程安全吗?
- 6. 是TcpClient.Available线程安全吗?
- 7. 是sqlite.swift线程安全吗?
- 8. 是winsock2线程安全吗?
- 9. 是unique_ptr线程安全吗?
- 10. 是SplittableRandom.split()线程安全吗?
- 11. 线程安全(是吗?)
- 12. 是IP2Location线程安全吗?
- 13. 是System.DirectoryServices.AccountManagement.GroupPrincipal线程安全吗?
- 14. 是Microsoft.Practices.EnterpriseLibrary.Data.Database.SetParameterValue线程安全吗?
- 15. 是java.util.UUID线程安全吗?
- 16. 是enumerateUsingBlock:线程安全吗?
- 17. 是java.util.concurrent.Future线程安全吗?
- 18. 是DatagramSocket.send线程安全吗?
- 19. 是长线程安全吗?
- 20. 是SpelExpression线程安全吗?
- 21. 是ArrayDescriptor线程安全吗?
- 22. java线程安全:线程安全吗?
- 23. 是getResourceAsStream()是线程安全的吗?
- 24. libgcrypt是线程安全的吗?
- 25. XMLInputFactory是线程安全的吗?
- 26. EF对象是线程安全的吗?
- 27. python zipfile是线程安全的吗?
- 28. ClassLoader应该是线程安全的吗?
- 29. 是boost :: detail :: atomic_count线程安全吗?
- 30. XOM:是Builder.build()线程安全吗?
UIKit中的任何内容都不是线程安全的。 – 2013-06-04 12:40:49
@ H2CO3“在UIKit中绘制图形上下文现在是线程安全的”:http://developer.apple.com/library/ios/releasenotes/General/WhatsNewIniOS/Articles/iPhoneOS4.html#//apple_ref/doc/ UID/TP40009559-SW29 – Krumelur