是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