2013-03-07 28 views
1

我有一個返回值(NSArray)的方法,並且該方法的實現包含調用具有完成塊的方法。我想要做的是返回從完成塊內獲得的NSArray。從包含塊的方法返回一個值

有什麼辦法可以延遲從這個方法返回一個值,直到完成塊完成執行?謝謝。

+0

你可以提供一個代碼示例? – trojanfoe 2013-03-07 12:58:05

回答

0

所以,你的意思是你想是這樣的:

- (NSArray*)someMethod { 
    [self someMethodWithACompletionBlock:^(NSArray *array) { 
     return array; 
    }]; 
} 

好,不幸的是,這是不會發生的一樣,(因爲該塊是一個函數,返回裏面它使編譯器認爲你正在嘗試從塊,而不是封閉的方法)返回一個值,但你可以在陣列的外部參數,並使用阻塞函數返回一個正確突變陣:

- (NSArray*)someMethod { 
    NSArray *retVal = nil; 
    [self someMethodWithAnOutParameter:&retVal]; 
    return retVal; 
}