我在Cocoa中使用addoperationwithblock时遇到了一些麻烦。假设我有一个主函数
-(IBAction) callthisone {
// Call another function "slave" here and store returned value in result
result = return value from slave
NSLog(@" result is %@",result);
}];
}
-(NSArray *) slave {
[operationQueue addOperationWithBlock: ^{
NSString * result = @"5" ;
}];
return result;
}
我永远无法获得master中返回的结果值。我该怎么做呢 ?我的方法是否正确?感谢
答案 0 :(得分:1)
您可以尝试这样的事情:
-(IBAction) callthisone {
[self slave: ^(NSString* result) {
NSLog(@" result is %@",result);
}
];
}
-(void)slave: (void(^)(NSString*)) callback {
[operationQueue addOperationWithBlock: ^{
NSString* str = [NSString stringWithFormat: @"5]";
callback(str);
}
];
}
答案 1 :(得分:0)
Apple's documentation for addOperationWithBlock
说:
的参数强> 的
要从操作对象执行的块。块应该采取 没有参数,也没有返回值。
这些用于自包含块操作。
你可以尝试一些不同的东西,在进出队列/线程方面有更大的灵活性吗?也许Grand Central Dispatch(我只是looking at this thread)。