我經常收到一些我需要在其他線程上處理的回調函數,我想將這些處理方法排列在一個線程上,以便它們按順序運行。我不想使用原始的NSThread(因爲工作太多),也不想使用GCD(因爲需要支持iOS 3.1)。開始查看NSOperation,但需要繼承,傳遞所需的數據等。然後開始考慮runLoops ......無論如何,實現這個任務的便捷方式是什麼?如何在其他線程上排列我的方法回調?
0
A
回答
1
NSOperation比運行循環更容易設置。你不會說你的回調是什麼。它們是否起作用?選擇?塊?對象?
您的NSOperation子類只需要覆蓋main並提供一種將回調傳遞給操作的方法。
@interface MyOperation : NSOperation
{
@private
CallbackType callback; // is e.g. a function pointer
void* context; // a parameter for the callback as an example
}
-(id) initWithCallback: (CallbackType) newCallback;
andContext: (void*) newContext;
@end
@implementation MyOperation
-(id) initWithCallback: (CallbackType) newCallback
{
self = [super init];
if (self != nil)
{
callback = newCallback;
context = newContext;
}
return self;
}
-(void) main
{
callback(context);
}
@end
+0
我正在使用套接字流,並且我正在調用 - (void)流:(NSStream *)theStream handleEvent:(NSStreamEvent)當從流中讀取數據時的streamEvent。我想將讀取流的處理放入隊列中。但我需要通過(有一個處理程序當前theStream,指向聲明的inputStream和outputStream,傳遞緩衝區(NSMutableData)。 – Centurion 2012-03-02 16:19:15
相關問題
- 1. 從其他線程回調
- 2. 如何從其他方法調用返回是其他方法的輸入?
- 3. 如何刪除的方法有回調或以其他方式
- 4. 如何在其他線程上調試異常?
- 5. 如何從C#中的其他線程調用線程?
- 6. 如何從主線程上的線程調用方法?
- 7. 在C#或.NET中,是否有辦法阻止其他線程調用特定線程上的方法?
- 8. 如何在其他方法
- 9. 在後臺線程上不會調用FSCopyObjectAsync回調方法
- 10. 如何調用其他EAR bean方法
- 11. 如何從其他線程
- 12. 如何在其他方法之前調用方法
- 13. 如何製作調用其他類的方法的java程序?
- 14. WCF:在IOCP線程上執行的單向回調方法?
- 15. iPhone SDK後臺線程調用其他方法
- 16. 調用外部方法實際上調用其他方法
- 17. 在主線程上調用方法?
- 18. 爲什麼我的課程不會調用其他方法?
- 19. 如何在使用TPL時在UI線程上調用方法?
- 20. 如何在工作線程中調用UI線程上的方法?
- 21. 如何防止其他線程在一個線程訪問方法時訪問方法?
- 22. 如何在其他類中調用另一個調用方法?
- 23. 你如何從其他課程調用方法?
- 24. 如何從其他課程調用方法?
- 25. 在其他線程上加載WinForms
- 26. 如何在線程上調用泛型方法?
- 27. 可以從線程調用返回類型列表的方法
- 28. 無法訪問我在其他類上創建的方法
- 29. 每次調用任何其他方法之前調用方法
- 30. IO操作在其他線程中阻塞我的UI線程?
線程從來不簡單。使用它們時,你總是需要做一些工作。 – v1Axvw 2012-03-02 15:32:23