1
我有一个被调用的方法,它所做的第一件事是确定网络何时可到达。如果不是,我想等10s,然后用最初传入的参数/参数运行相同的方法。重试Objective-C方法,直到满足条件
这是我的灾难性尝试(我更像一个JS开发人员,相对较新Objective-C的):
- (void)sendRequestToURL:(NSString *)url withPostData:(NSString *)postData withPage:(int)page sortBy:(NSString *)sort completionBlock:(void (^)(NSDictionary *))completion {
if(![FooNetworkManager isReachable]){
self.lastRequest = ??? // lastRequest is an NSDictionary
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * 10);
dispatch_after(delay, dispatch_get_main_queue(), ^(void){
[self sendRequestToURL:self.lastRequest]; // this is almost definitely wrong
});
}
}
在JavaScript中,一个方法里面,我们有机会获得包含被传入方法的所有PARAMS的arguments
对象,不知道如何在Objective-C复制此。
此外,self.lastRequest
定义进一步向上在这同一类:以这种方式你只是捕捉
- (void)sendRequestToURL:(NSString *)url withPostData:(NSString *)postData withPage:(int)page sortBy:(NSString *)sort completionBlock:(void (^)(NSDictionary *))completion {
if(![FooNetworkManager isReachable]){
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * 10);
dispatch_after(delay, dispatch_get_main_queue(), ^(void){
[self sendRequestToURL:url withPostData:postData withPage:page sortBy:sort completionBlock:completion];
});
}
}
:
@property(nonatomic, strong) NSDictionary *lastRequest;
不知道为什么我没有这样做!?谢谢。 – benhowdle89
我的回答错了,这是正确的。对不起@ benhowdle89! – dokun1