有沒有辦法在Iphone應用程序中的EDT/Event Dispatch Thread中添加要執行的東西,例如Java Swing應用程序中的invokeLater方法?Iphone將任務添加到EDT?像SwingUtilities.invokeLater?
3
A
回答
4
看一看NSObject
類的引用 - 方法開始performSelector
0
我想我也有些代碼的一部分。
這是不幸的是沒有這樣做所需的行爲:
- (void) invokeLater_aux:(NSArray*)functionName_arg
{
NSLog(@"invokeLater_aux:");
if(functionName_arg != nil && (functionName_arg.count > 0)){
// split the params:
NSString* functionNameString = [functionName_arg objectAtIndex:0];
NSLog(@"functionNameString: %@",functionNameString);
SEL functionName = NSSelectorFromString(functionNameString);
id arg = nil;
if(functionName_arg.count > 1){
arg = [functionName_arg objectAtIndex:1];
}
// call the function on main thread
[self performSelectorOnMainThread:functionName withObject:arg waitUntilDone:YES ];
}
[functionName_arg release];
}
- (void) invokeLater: (SEL)functionName withObject:(id)arg
{
NSLog(@"invoke later: %@",NSStringFromSelector(functionName));
[self performSelectorInBackground:@selector(invokeLater_aux:)
withObject:[[NSArray alloc] initWithObjects:
NSStringFromSelector(functionName),//the function name as String
arg,// the function arguments
nil]
];
}
因爲它開始的invokeLater一個新線程,不等待完成執行主線程,它會在被執行的invokeLater_aux的號召主線程(在上下文切換?)
有可能有n
線程使用此代碼,如果你調用n
倍invokeLater
。
- 如何在
invokeLater_aux
,等到主線程完成?
相關問題
- 1. Iphone將圖像添加到項目
- 2. 將任務添加到python asyncio
- 3. 將任務添加到我的遊戲
- 4. 將任務添加到用戶的Outlook
- 5. 如何將sonarlint添加到gradle任務?
- 6. 如何將任務添加到主「構建」任務gradle這個
- 7. 將任務依賴關係添加到現有的Gradle任務
- 8. 如何將Rake任務添加到默認的Rake任務?
- 9. 有條件地將任務添加到Gradle中的任務樹
- 10. 將SoundTouch添加到Xcode/iPhone
- 11. SwingUtilities.invokeLater
- 12. SwingUtilities.invokeLater()
- 13. SwingUtilities.invokeLater()
- 14. Outlook添加任務
- 15. 阻止EDT直到executorservice完成所有任務
- 16. 將圖像添加到GUI
- 17. 將圖像添加到TextField
- 18. 將圖像添加到Tkinter
- 19. 將圖像添加到HighChart
- 20. 將圖像添加到jsfiddle
- 21. 將圖像添加到jframe
- 22. 將圖像添加到JSfiddle
- 23. 將圖像添加到GridView
- 24. 將圖像添加到JFrame
- 25. 將圖像添加到GUI
- 26. 將圖像添加到UITextView
- 27. 將圖像添加到asp:linkbutton?
- 28. 將圖像添加到JFrame
- 29. 將圖像添加到plist
- 30. 將圖像添加到JApplet