我想将另一个NSArray作为参数传递给完成块方法,因为我是这个概念的新手,我无法理解如何做到这一点。目前我只传递一个数组,但现在我想传递第二个nsarray,在第二个数组中我想传递带有值的数组,以便我可以在那里使用
typedef void(^completion)(NSArray *list);
-(void) getMoreData:(completion) completion
通话方式
[Magento.service getMoreData:^(NSArray *list ) {
if(list){
}
在上面的方法我想通过NSArray,这个方法是在不同的类,我从不同的调用。此数组正在使用此方法。
答案 0 :(得分:4)
您可以将其称为C函数,例如,我已声明了一个新类MyClass
。接口文件的内容是:
typedef void(^completion)(NSArray *list);
@interface MyClass : NSObject
- (void)getMoreData:(completion)completionBlock;
@end
并在实施中
- (void)getMoreData:(completion)completionBlock
{
// fullfil your array
NSArray *array = @[@1, @2, @3];
// call the completion block
completionBlock(array);
}
我正在使用它如下:
MyClass *myClassInstance = [[MyClass alloc] init];
[myClassInstance getMoreData:^(NSArray *list) {
if (list) {
NSLog(@"%@", list);
} else {
NSLog(@"Nil array");
}
}];
,输出为:
2013-05-09 16:29:00.676 Test[823:11303] (
1,
2,
3
)
答案 1 :(得分:0)
将数组传递给完成块不是您的责任。在您描述的情况下,getMoreData调用完成块,因此它是将数组传递给块的方法。
- (void) getMoreData: (completion) completion
{
...some code...
NSArray *array = [[NSArray alloc] init];
if(completion)
completion(array);
...some code...
}
您的责任只是传递一个完成块,该块将使用在getMoreData方法中创建的数组。