我想知道如何在單獨線程中運行方法?類別&方法參考。謝謝。觸發在單獨線程中運行的方法
2
A
回答
3
找到了答案(您可以使用這些語句來實現這一點):
[NSThread detachNewThreadSelector:@selector(myThreadMainMethod:) toTarget:self withObject:nil];
OR
NSThread *myThread = [[NSThread alloc] initWithTarget:self
selector:@selector(myThreadMainMethod:)
object:nil];
[myThreadstart];
4
另一種方法是
[someObject performSelectorInBackground:@selector(someSelector:)
withObject:nil];
克里斯。
2
如果您已經創建了一個NSThread
和你扶住NSThread
對象,隨後就可以發送更多的消息,該線程使用進行:
–[NSObject performSelector:onThread:withObject:waitUntilDone:]
1
你需要一個新的自動釋放池處理該線程中的所有自動釋放。主線程有一個在你到達代碼之前由框架自動創建的線程。
還要確保您是否在做任何接口更新,並將其委託給主線程。更新可能會或可能不會工作,如果你不
[self performSelectorOnMainThread:@selector(someSelector:)
withObject:passedInObject waitUntilDone:NO];
chris。
2
找到了答案,以我自己的問題:
當我開始在 單獨的線程的新方法,爲什麼我需要在 方法的 NSAutoreleasePool對象?如果我不添加它,我會在日誌中獲得一個 Pool Stack。
自動釋放池和線程(MemoryMgmt.pdf從Apple.com):
在Cocoa應用程序中的每個線程 維護自己的 NSAutoreleasePool對象的堆棧。當 線程終止時,它會自動釋放與其自身關聯的所有自動釋放池 。自動發佈 池自動創建和 銷燬主線程 應用程序基於應用程序 套件,所以你的代碼通常不會 必須在那裏處理它們。如果您在 應用套件的主線程 以外撥打可可電話,您需要創建自己的 自動釋放池。如果您正在編寫僅基金會 應用程序或如果您分離線程,則這種情況是 。
相關問題
- 1. SQL觸發器是否在單獨的線程中運行?
- 2. 有沒有辦法在MySQL的單獨線程中運行觸發器?
- 3. 異步方法是否在單獨的線程中運行?
- 4. 如何在單獨的線程中運行方法
- 5. 在單獨的線程中運行VCL
- 6. 方法在單獨的線程中運行 - 如何調用線程
- 7. SQL Server在線程中觸發並運行CLR方法
- 8. 另一類中帶參數的單獨線程運行方法
- 9. 如何在Android的單獨線程上運行導入方法?
- 10. 「在單獨的線程中運行實例」的最簡單方法是什麼?
- 11. 如何運行觸發單獨的表
- 12. 運行在單獨的線程
- 13. ios:requestWithURL方法發生在單獨的線程中嗎?
- 14. pyqt多線程 - 無法同時運行單獨的線程?
- 15. 在單獨線程上運行ALAssetLibrary塊
- 16. 在單獨的線程中衝突執行相同的方法?
- 17. Django unittesting:model.all()查詢集在單獨線程中運行的方法是空的
- 18. Android:異步在一個單獨的線程中運行一個方法
- 19. 如何在單獨線程中的操作完成時觸發?
- 20. BeginInvoke()是否運行單獨的線程?
- 21. 在單獨的線程中運行窗體表單
- 22. jBPM - 在單獨的線程中運行進程
- 23. 在Qt中運行單獨的進程或線程
- 24. Python:在類方法中運行線程
- 25. 在線程中運行類方法(python)
- 26. Task.Continuewith中的新任務(在單獨的線程上運行)
- 27. 在線程運行方法中運行CryptoPP FileSink無法殺死Qt線程
- 28. 線程方法未運行?
- 29. 在單獨的線程中運行SimpleXMLRPCServer並關閉
- 30. Google Analytics(分析)是否在單獨的線程中運行?