앱을 빌드 할 때 NetEngine이라는 클래스를 만들어 모든 네트워크 요청을 관리합니다. 그러나 NetEngine을 사용하는보기 컨트롤러를 종료 한 후에도 여전히 성공 또는 실패 블록을 호출합니다.보기 컨트롤러를 종료 한 후 콜백 블록을 호출하지 마십시오.
의 ViewController :
[[NetEngine engine] GET:httpUrl success:^(id responseObject) {
//some code here
//It's still called after I quit viewctroller
} failure:^(NSError *error) {
//some code here
//It's still called after I quit viewctroller
}];
NetEngine :
만들기 :
typedef void(^SuccessBlock) (id responseObject);
typedef void(^FailureBlock) (NSError *error);
@interface NetEngine()
@property (nonatomic, strong) AFHTTPSessionManager *httpManager;
@end
@implementation NetEngine
+ (NetEngine *)engine {
static NetEngine *_sharedEngengine = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedEngengine = [[self alloc] init];
});
return _sharedEngengine;
}
- (id)init {
if (self = [super init]) {
_httpManager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:BZTVBaseServerPath]];
[_httpManager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"accept"];
_httpManager.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
_httpManager.operationQueue.maxConcurrentOperationCount = 4;
[_httpManager.requestSerializer setTimeoutInterval:10.0];
}
return self;
}
- (void)GET:(NSString *)URLString success:(SuccessBlock)successBlock failure:(FailureBlock)failureBlock {
// some thing about cache
[_httpManager GET:encodeUrl parameters:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nonnull responseObject) {
[[self defaultCache] setObject:responseObject forKey:cacheKey];
if (successBlock) {
successBlock(responseObject);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (isCache) {
if (successBlock) {
successBlock([[self defaultCache] objectForKey:cacheKey]);
}
}
if (failureBlock) {
failureBlock(error);
}
}];
}
때문이다. 들어오는 응답을 잡아 당겨야합니다! View Controller를 종료하기 전에 유효한 응답을 확인하십시오. 사용 가능한 경우 VC를 종료하고 응답을 기다립니다. –
@TejaNandamuri 네 말이 맞지만 내게 좀 더 조언 해 줄래? 또는 들어오는 응답을 처리하는 방법에 대한 몇 가지 기사가 있습니까? 고마워. –
나는 이것에 관해 어떤 게시물도 없을 것이라고 생각한다. 이것은 모두 귀하의 요구 사항에 달려 있습니다. 당신이하려는 일에 대해 더 많은 정보를 제공해야합니다. –