[iOS][RestKit]如何在RestKit裡面設定Timeout屬性

基本上RestKit裡面沒有直接設定timeout的地方,所以你必須繼承RKObjectManager,然後修改其中一個方法:

- (NSMutableURLRequest *)requestWithObject:(id)object
                                method:(RKRequestMethod)method
                                  path:(NSString *)path
                            parameters:(NSDictionary *)parameters;

像我是這樣修改:

- (NSMutableURLRequest *)requestWithObject:(id)object
                                method:(RKRequestMethod)method
                                  path:(NSString *)path
                            parameters:(NSDictionary *)parameters;
{
    NSMutableURLRequest *request = [super requestWithObject:object method:method path:path parameters:parameters];
    request.timeoutInterval = self.timeout;
    return request;
}

因為NSMutableURLRequest裡面才會有timeoutInterval可以修改,然後我又新增了timeout屬性讓他可以設定。

記得overwrite他的初始化方法,讓他可以初始化timeout屬性:

- (instancetype)initWithHTTPClient:(AFHTTPClient *)client
{
    if (self = [super initWithHTTPClient:client]) {
        self.timeout = 5;
    }
    return self;
}

這樣你就能設定operation的timeout了。不過我還沒測試過,詳情可以參考其他一些回答的網路文章。

留言