乍一看這似乎是一個簡單的問題,但我無法確定如何在某個後臺線程上運行匿名塊,即我正在尋找相當於-performSelector:onThread:withObject:waitUntilDone:
的塊。在特定的後臺線程上運行匿名塊
相關:是否有可能將調度隊列與某個後臺線程相關聯,就像主隊列與應用程序的主線程相關聯?
編輯闡明瞭我期待運行匿名塊
乍一看這似乎是一個簡單的問題,但我無法確定如何在某個後臺線程上運行匿名塊,即我正在尋找相當於-performSelector:onThread:withObject:waitUntilDone:
的塊。在特定的後臺線程上運行匿名塊
相關:是否有可能將調度隊列與某個後臺線程相關聯,就像主隊列與應用程序的主線程相關聯?
編輯闡明瞭我期待運行匿名塊
我在邁克灰的PLBlocksPlayground最近看到此功能RunOnThread()
(zip文件,見BlocksAdditions.m):
void RunOnThread(NSThread *thread, BOOL wait, BasicBlock block)
{
[[[block copy] autorelease] performSelector: @selector(my_callBlock) onThread: thread withObject: nil waitUntilDone: wait];
}
這就是我一直在尋找。
在PLBlocksPlayground中還有一些其他非常有用的塊相關實用程序,其中大部分Ash先生在此解釋post。
塊是一個功能。像調用任何其他函數一樣調用它。
我應該提到,我正在尋找在後臺線程上運行匿名塊。 –
如果我理解你的權利,你應該這樣做:
dispatch_queue_t thread = dispatch_queue_create("your dispatch name", NULL);
dispatch_async(analyze, ^{
//code of your anonymous block
});
dispatch_release(thread);
你也可以寫一些方法,這將帶塊,但你應該知道什麼類型的參數,將其持有:
-(void)performBlock:(void (^)(SomeType par1, SomeType par2))block ToData:(Sometype)data;
您可以用匿名塊稱之爲:
[something performBlock:^(SomeType par1, SomeType par2){
//do your stuff
} ToData: data]
而且在方法,你可以打電話給你的BL玉珠作爲一個簡單的C函數:
block(par1, par2);
我不認爲GCD給出了有關調度隊列運行在哪個線程上的任何保證;所以我不認爲你的第一個解決方案會起作用。你的第二個解決方案更有趣;我認爲它應該工作 - 將嘗試並更新。 –
@ChaitanyaGupta是正確的。 dispatch_queue與線程不一樣。 dispatch_queue可以在任意數量的線程上運行。 – bandejapaisa
鏈接似乎被破壞,任何人都知道內容在哪裏? – nmr
不知道現在的內容。儘管如此,我已經問過Mike Ash(PLBlocksPlayground的作者)希望我們很快會知道它的新位置。 –
我更新了鏈接 - 它現在指向一個可以下載的zip文件。 –