Ios 未发送连续第五次RestKit呼叫

Ios 未发送连续第五次RestKit呼叫,ios,restkit,Ios,Restkit,我正在通过RestKit发送objectManager postObject调用。在4次返回403的尝试之后,我的第5次尝试没有被RestKit接收并发送出去。我已经通过Charles观察我的实际流量来验证了这一点,并且通过查看RestKit日志,RestKit正在获取我的请求并将其放入RequestQueue,但它从未被收回 我的前4个请求在RestKit日志中看起来像这样为日志墙道歉: D restkit:RKObjectManager.m:171 CacheTimeoutSet: 60.0

我正在通过RestKit发送objectManager postObject调用。在4次返回403的尝试之后,我的第5次尝试没有被RestKit接收并发送出去。我已经通过Charles观察我的实际流量来验证了这一点,并且通过查看RestKit日志,RestKit正在获取我的请求并将其放入RequestQueue,但它从未被收回

我的前4个请求在RestKit日志中看起来像这样为日志墙道歉:

D restkit:RKObjectManager.m:171 CacheTimeoutSet: 60.000000 - 60.000000
T restkit.network.queue:RKRequestQueue.m:226 Request <RKObjectLoader: 0x784ac90> added to queue <RKRequestQueue: 0x6501530>
T restkit.network.queue:RKRequestQueue.m:173 Processing request <RKObjectLoader: 0x784ac90> in queue <RKRequestQueue: 0x6501530>
T restkit.network.queue:RKRequestQueue.m:104 Loading count increasing from 0 to 1. Firing requestQueueDidBeginLoading
T restkit.network.queue:RKRequestQueue.m:131 Loading count set to 1 for queue <RKRequestQueue: 0x6501530>
T restkit.network.cache:RKRequestCache.m:106 Found cachePath '<REMOVED>' for <RKObjectLoader: 0x784ac90>
T restkit.network.cache:RKRequestCache.m:123 Determined hasResponseForRequest: <RKObjectLoader: 0x784ac90> => NO
D restkit.network:RKRequest.m:255 Sending asynchronous POST request to URL <REMOVED>.
D restkit.network:RKObjectLoader.m:295 POST or PUT request for source object <TSLAuthenticationContract: 0x7849b30>
    Username:<REMOVED>
    Campus:<REMOVED>, serializing to MIME Type application/json for transport...
D restkit.object_mapping:RKObjectMappingOperation.m:391 Starting mapping operation...
T restkit.object_mapping:RKObjectMappingOperation.m:231 Mapping attribute value keyPath 'username' to 'Username'
T restkit.object_mapping:RKObjectMappingOperation.m:241 Mapped attribute value from keyPath 'username' to 'Username'. Value: <REMOVED>
T restkit.object_mapping:RKObjectMappingOperation.m:231 Mapping attribute value keyPath 'password' to 'Password'
T restkit.object_mapping:RKObjectMappingOperation.m:241 Mapped attribute value from keyPath 'password' to 'Password'. Value: <REMOVED>
T restkit.object_mapping:RKObjectMappingOperation.m:231 Mapping attribute value keyPath 'campusName' to 'CampusName'
T restkit.object_mapping:RKObjectMappingOperation.m:241 Mapped attribute value from keyPath 'campusName' to 'CampusName'. Value: <REMOVED>
D restkit.object_mapping:RKObjectMappingOperation.m:397 Finished mapping operation successfully...
T restkit.network.cache:RKRequestCache.m:106 Found cachePath '<REMOVED>' for <RKObjectLoader: 0x784ac90>
D restkit.network.cache:RKRequestCache.m:220 Read nil cached headers from cachePath '<REMOVED>' for '<RKObjectLoader: 0x784ac90>'
D restkit.network.cache:RKRequestCache.m:245 Found cached ETag '(null)' for '<RKObjectLoader: 0x784ac90>'
T restkit.network:RKRequest.m:209 Prepared POST URLRequest '<NSMutableURLRequest <REMOVED>>'. HTTP Headers: <REMOVED>.
D restkit.network.queue:RKRequestQueue.m:180 Sent request <RKObjectLoader: 0x784ac90> from queue <RKRequestQueue: 0x6501530>. Loading count = 1 of 4
T restkit.network.queue:RKRequestQueue.m:142 Timer initialized with delay 0.300000 for queue <RKRequestQueue: 0x6501530>
<REMOVED - Multiple Timer messages>
T restkit.network.queue:RKRequestQueue.m:142 Timer initialized with delay 0.300000 for queue <RKRequestQueue: 0x6501530>
D restkit.network:RKResponse.m:105 NSHTTPURLResponse Status Code: 403
然而,在我第五次打电话时,这种情况发生了:

D restkit:RKObjectManager.m:171 CacheTimeoutSet: 60.000000 - 60.000000
T restkit.network.queue:RKRequestQueue.m:226 Request <RKObjectLoader: 0x782a370> added to queue <RKRequestQueue: 0x6501530>
T restkit.network.queue:RKRequestQueue.m:142 Timer initialized with delay 0.300000 for queue <RKRequestQueue: 0x6501530>
<REMOVED - Multiple Timer messages>
T restkit.network.queue:RKRequestQueue.m:142 Timer initialized with delay 0.300000 for queue <RKRequestQueue: 0x6501530>
如您所见,将请求添加到队列后,没有处理请求日志,没有加载计数日志,没有任何内容。以前有人经历过吗?是否有一些内部计数器阻止RestKit再次拨打此电话?我有一些用户不是很专业,他们的密码也有问题,所以他们可能会连续4次以上无法进行身份验证

编辑: 经过更多的研究,当RestKit收到失败的响应时,它似乎没有减少objectLoader中的loadingCount标志。不幸的是,我不知道该如何着手解决这个问题。它是否像在我的委托中检查403并在找到请求时手动删除请求那样简单

编辑2: 好的,我可以通过调用objectLoader:didFailWithError:delegate方法中的RKRequestQueue cancelRequest:强制删除失败的请求。不确定这是不是正确的方法,但它是有效的。我希望RestKit在内部处理这个问题

谢谢, 罗布也发生在我身上 我注意到我的exec不好,所以我运行了Xcode评测,并且我注意到我正在释放运行请求的对象,以便尽早执行


在正确地保留它之后,它被解决了

我把我的解决方案放在对我的问题的编辑中,但让我如此高兴的是,它再次出现在一个被接受的答案中

经过更多的研究,RestKit似乎并没有减少 objectLoader获得失败响应时的loadingCount标志。 不幸的是,我不知道该如何着手解决这个问题。是不是 简单到在我的委托中检查403并删除请求 如果我找到它,手动操作

好的,我可以通过 调用RKRequestQueue cancelRequest:在我的 objectLoader:didFailWithError:委托方法。不知道这是不是真的 正确的方法,但它是有效的。我希望RestKit能够在内部使用 处理这个问题


你能详细说明一下吗?如果事情没有失败,RestKit在哪里减少objectLoader中的loadingCount标志?试图找出失败案例中代码缺失的位置