Post

Keyword __bridge em Objective-C

Em Objective-C, __bridge é uma palavra-chave usada na conversão de tipos para trabalhar com objetos Core Foundation (CF) e Objective-C, especificamente para transferir propriedade ou especificar como a memória deve ser gerenciada entre os dois tipos.

__bridge permite que o programador converta um objeto Objective-C em um objeto Core Foundation, ou vice-versa, sem realmente transferir a propriedade ou alterar a contagem de referência do objeto (ARC).

  • __bridge: Isso simplesmente converte o ponteiro do objeto de um tipo para outro sem alterar a contagem de referência ou transferir a propriedade. Isso é usado quando precisamos passar um objeto Objective-C para uma função Core Foundation ou vice-versa.
  • __bridge_retained: Isso converte o ponteiro do objeto e transfere a propriedade de Objective-C para Core Foundation. Isso significa que o chamador agora é responsável por liberar o objeto quando ele não for mais necessário.
  • __bridge_transfer: Isso lança o ponteiro do objeto e transfere a propriedade do Core Foundation para o Objective-C. Isso significa que o chamador não é mais responsável por liberar o objeto.
1
2
NSArray *myArray = @[ @"Hello", @"world" ];
CFArrayRef cfArray = (__bridge CFArrayRef)myArray;

Core Foundation

O SDK nativo do macOS utiliza o Core Foundation. Nele, há alguns tipos que podem ser tratados no código objective-C.

Exemplo:

1
typedef struct __CFArray CFArrayRef;

Na linha acima, o CFArrayRef é simplesmente um ponteiro para CFArray que pode ser tratado com um __bridge para NSArray e vice-versa.

Esta postagem está licenciada sob CC BY 4.0 pelo autor.