Я получаю сбой в ASIHTTPRequest при выполнении executeInvocation: метод.
Стек:
ASIHTTPRequest performInvocation:onTarget:releasingObject: 1877
ASIHTTPRequest performSelector:onTarget:withObject:amount:callerToRetain: 1870
ASIHTTPRequest updateProgressIndicator:withProgress:ofTotal: 1903
ASINetworkQueue request:didReceiveBytes: 240
ASIHTTPRequest performInvocation:onTarget:releasingObject: 1877
Это метод, в котором происходит сбой:
+ (void)performInvocation:(NSInvocation *)invocation onTarget:(id *)target releasingObject:(id)objectToRelease
{
if (*target && [*target respondsToSelector:[invocation selector]]) {
[invocation invokeWithTarget:*target];
}
CFRelease(invocation);
if (objectToRelease) {
CFRelease(objectToRelease);
}
}
Я полагаю, что это происходит при вызове invokeWithTarget.
Это случается редко, но в крупномасштабных развертываниях это происходит очень часто.
При поиске я обнаружил смутноессылка на добавление:
[cbInvocation retainArguments];
обратно в executeSelector: ... непосредственно перед вызовом [cbInvocation executeSelectorOnMainThread: ...].Но это вряд ли показалось авторитетным, и я не уверен, что понимаю, что там происходит, достаточно, чтобы произвести и / или доверять такого рода изменениям.Я не могу воспроизвести проблему локально, но я получаю большое количество отчетов о сбоях с этой трассировкой стека из поля.
Кстати, по коду iOS.
Кто-нибудь знает, чтоэто может быть?