Объектив- C EX C -BAD-ACCESS - разрешение без AR C? - PullRequest
0 голосов
/ 10 января 2020

Для справки я использую Xcode 11.3

У меня есть проблема с объектом, который был освобожден, и это вызывает EX C BAD ACCESS. Хорошей новостью является то, что я точно знаю, что это за объект. Чего я не знаю, так это как решить.

Вот код, где происходит взлом sh ...

- (void)didSendPTPCommand:(NSData*)command inData:(NSData*)data response:(NSData*)response error:(NSError*)error contextInfo:(void*)contextInfo
{
    NSLog(@"%@ %@ %@ %@", NSStringFromSelector(_cmd), data, response, error);

    PTPOperationRequest*  ptpRequest  = (__bridge PTPOperationRequest*)contextInfo;
    PTPOperationResponse* ptpResponse = NULL;

    if ( ptpRequest )

Включен cra sh:

PTPOperationRequest*  ptpRequest  = (__bridge PTPOperationRequest*)contextInfo;

Этот код вызывается из этого кода:

            ptpData       = NULL;
            PTPOperationRequest*  request       = [[PTPOperationRequest alloc] init];
            request.operationCode       = PTPOperationCodeInitiateCapture;
            request.numberOfParameters  = 0;
            commandBuffer               = request.commandBuffer;

            [camera requestSendPTPCommand:commandBuffer
                                  outData:NULL
                      sendCommandDelegate:self
                   didSendCommandSelector:@selector(didSendPTPCommand:inData:response:error:contextInfo:)
                              contextInfo:(__bridge void * _Nullable)(request)];

где проклятие я пытаюсь передать "запрос". Долгое время go я бы справился с этим с удержанием / выпуском - больше нет. Что мне теперь делать?

  • Дэвид

1 Ответ

0 голосов
/ 10 января 2020

Я думаю, что теперь у меня есть решение.

__bridge_retained

Таким образом, следующий код изменяется таким образом:

    [camera requestSendPTPCommand:commandBuffer
                          outData:NULL
              sendCommandDelegate:self
           didSendCommandSelector:@selector(didSendPTPCommand:inData:response:error:contextInfo:)
                      contextInfo:(__bridge_retained void * _Nullable)(request)];

Я протестировал, и он работает.

  • Дэвид
...