回答
1)定義你自己完成的塊,
typedef void(^myCompletion)(BOOL);
2)創建這需要你完成的方法塊作爲參數,
-(void) myMethod:(myCompletion) compblock{
//do stuff
compblock(YES);
}
3)這是你如何使用它,
[self myMethod:^(BOOL finished) {
if(finished){
NSLog(@"success");
}
}];
塊變量在語法類似於C.
由於語法是難看它們通常通過typedef到函數指針,然而,它們也可以正常聲明。
typedef void (^MyFunc)(BOOL finished);
- (void)myMethod:(MyFunc)func
{
}
看到這個答案非的typedef:
好的,謝謝我會檢查出來,這對我來說有點複雜,我在哪裏有typedef? – user2206906 2013-05-01 18:38:41
你可以在'@ interface'之前的typedef放在頭文件中。 – 2015-06-07 22:07:52
您定義塊爲自定義類型:
typedef void (^ButtonCompletionBlock)(int buttonIndex);
然後使用它作爲一個一種方法的論點:
+ (SomeButtonView*)buttonViewWithTitle:(NSString *)title
cancelAction:(ButtonCompletionBlock)cancelBlock
completionAction:(ButtonCompletionBlock)completionBlock
當在代碼中調用這個它只是像任何其他塊:
[SomeButtonView buttonViewWithTitle:@"Title"
cancelAction:^(int buttonIndex) {
NSLog(@"User cancelled");
}
completionAction:^(int buttonIndex) {
NSLog(@"User tapped index %i", buttonIndex);
}];
如果談到時間,觸發塊,只需調用completionBlock()
(其中completionBlock
是當地塊的副本的名稱)。
爲你而設的勳章,善良的先生。 – Josh 2017-01-17 16:47:58
- 1. IntelliJ Idea自動完成我自己的Grails域元類方法?
- 2. 得到我自己的模塊定義的所有方法
- 3. WPF定製滑塊drawed自己
- 4. 兩塊完成的OCMock存根方法
- 5. Angular:應該在自己的模塊中完成路由嗎?
- 6. 如何成功實現我自己的ArrayList類的__contains__方法?
- 7. 定製PreferenceActivity或創建我自己的?
- 8. 自動完成在Webstorm爲我定製的NPM模塊(ES6 /巴貝爾)
- 9. 編寫我自己的拆分方法
- 10. 用我自己的方法擴展Protobuf
- 11. 地圖和我自己的方法
- 12. 自動完成Google地圖V3無法自定義的地方?
- 13. Django可選和自動完成:自動完成不起作用。我應該添加我自己的JS嗎?
- 14. 無法完成GPUImageMovieWriter完成程序塊
- 15. 排除從自動完成的方法
- 16. 創建一個自定義的方法完工塊
- 17. 傳遞參數以完成p的方法:自動完成
- 18. eclipse自動完成之前完成一個方法的全名
- 19. 製作我自己的AsynchronousSocketChannel
- 20. 在定義我自己的toInt方法時scala中的異常
- 21. MVC3自動完成和控制器中的POST方法
- 22. 爲什麼找不到我自己的自定義模塊?
- 23. 寫我自己與compareToIgnoreCase方法
- 24. 我想執行我在自己製作的自定義事實
- 25. 無法制作我自己的自定義例外。請幫助我
- 26. 提供我自己的查詢語句 - 可以完成嗎?
- 27. 自己的委託方法
- 28. Smalltalk自己的新方法
- 29. 呼叫自己的方法
- 30. 未定義的方法`自動完成'的軌道3和jquery
compclock(YES)與return compclock = YES相同? – user2206906 2013-05-01 18:52:39
是的,你已經知道了,我們可以根據需要放置計時器(YES)/計時器(NO),我們可以在這裏返回NO來表示失敗完成 – 2013-05-01 18:55:03
跟蹤返回值:if(finished)NSLog(@「success」);否則NSLog(@「failure」); – 2013-05-01 18:58:41