2015-02-12 50 views
-1

我正在關注this answer以測試我在類中定義的異步方法。不過,我無法爲其添加完成處理程序定義。任何幫助?如何支持/添加完成處理程序到我的異步方法?

我有一個方法,定義如下:

//.h 
- (void)loadData; 

//.m 
- (void)loadData{ 
     NSString *urlString = 
    [NSString stringWithFormat:@"www.example.com/json", kResultsLimit ]; 
    NSURL *url = [NSURL URLWithString:urlString]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
    [NSURLConnection sendAsynchronousRequest:request 
             queue:[NSOperationQueue mainQueue] 
          completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 

          } 
    }]; 

我現在想完成處理程序添加到loadData方法定義。我怎麼可以添加它無論是在h和.m文件? .H的

例如:

 - (void)loadData+completionhandler; 
+0

只需添加它即可。問題是什麼? – matt 2015-02-12 01:54:06

+0

@matt我真的不知道如何將它添加到.h和.m文件中,特別是.m文件。我是否需要爲它編寫一些代碼? – mm24 2015-02-12 01:56:19

+1

我再說一遍:有什麼問題?完成處理程序是一個塊,與您已經顯示的代碼完全相同。你不知道該怎麼做? – matt 2015-02-12 02:10:31

回答

3

調用它在網絡請求的完成處理程序@ AdamPro13給你如何做到這一點的例子。

我的猜測是,你正在努力如何定義一個塊作爲參數的方法。這很混亂。

我使用本網站(一個不太SFW URL名稱),以找出在不同情況下使用塊的語法:

GoshDarnLinkSyntax

爲你的鍵位是這樣的部分:

通過塊作爲方法參數:

- (void)someMethodThatTakesABlock:(returnType (^)(parameterTypes))blockName; 
+0

太棒了。我正在嘗試這個..但是我需要找到一些關於如何在上面的函數中定義的塊的完成處理程序中調用「blockName」的參考。 – mm24 2015-02-12 12:43:40

+0

要調用一個塊,可以使用與調用函數相同的語法:'blockName(parameters)',或者只是'blockName()',如果它沒有任何參數。 – 2015-02-13 03:30:28

1

聲明它在你的.h像這樣:- (void)loadDataWithCompletion:(void(^)(id))completion;

可以再用completion(data);