Bifurcação de recursos - Resource fork

A bifurcação de recursos é um garfo ou seção de um arquivo on a Apple 's clássico Mac OS sistema operacional , que também foi adiado para os modernos MacOS para compatibilidade, utilizada para armazenar dados estruturados junto com os dados não estruturados armazenados na bifurcação de dados .

Uma bifurcação de recursos armazena informações em um formulário específico, contendo detalhes como bitmaps de ícone, formas de janelas, definições de menus e seu conteúdo e código de aplicativo ( código de máquina ). Por exemplo, um arquivo de processamento de texto pode armazenar seu texto na bifurcação de dados, enquanto armazena quaisquer imagens incorporadas na bifurcação de recursos do mesmo arquivo. A bifurcação de recursos é usada principalmente por executáveis , mas todo arquivo pode ter uma bifurcação de recursos.

O sistema de arquivos Macintosh

Originalmente concebido e implementado pelo programador Bruce Horn , a bifurcação de recursos foi usada para três finalidades com o sistema de arquivos Macintosh :

  • Ele era usado para armazenar todos os dados gráficos em disco até que fossem necessários, depois recuperados, desenhados na tela e jogados fora. Esta variante de software de memória virtual ajudou a Apple a reduzir os requisitos de memória de 1 MB no Apple Lisa para 128 KB no Macintosh.
  • Como todas as imagens e textos foram armazenados separadamente em uma bifurcação de recursos, ele poderia ser usado para permitir que um não-programador traduzisse um aplicativo para um mercado estrangeiro, um processo denominado internacionalização e localização .
  • Ele pode ser usado para distribuir quase todos os componentes de um aplicativo em um único arquivo, reduzindo a confusão e simplificando a instalação e remoção do aplicativo.

A bifurcação de recursos é implementada em todos os sistemas de arquivos usados ​​para unidades de sistema no Macintosh ( MFS , HFS e HFS Plus ). A presença de uma bifurcação de recurso facilita o armazenamento de uma variedade de informações adicionais, como permitir que o sistema exiba o ícone correto para um arquivo e o abra sem a necessidade de uma extensão de arquivo no nome do arquivo. Embora o acesso à bifurcação de dados funcione como o acesso a arquivos em qualquer outro sistema operacional - escolha um arquivo, escolha um deslocamento de byte, leia alguns dados - o acesso à bifurcação de recursos funciona mais como extrair registros estruturados de um banco de dados . (O Microsoft Windows também tem um conceito de " recursos ", mas eles não estão relacionados aos recursos do Mac OS.)

A bifurcação de recursos às vezes é usada para armazenar os metadados de um arquivo, embora também possa ser usada para armazenar os dados reais, como era o caso com arquivos de fonte nos sistemas operacionais Mac clássicos. Observe que os sistemas de arquivos Macintosh também têm uma área separada para metadados, distinta da bifurcação de dados ou de recursos. Sendo parte da entrada do catálogo para o arquivo, é muito mais rápido acessá-lo. No entanto, a quantidade de dados armazenados aqui é mínima, sendo apenas os carimbos de data / hora de criação e modificação, o tipo de arquivo e códigos do criador, comprimentos de bifurcação e o nome do arquivo. Alguns arquivos têm apenas uma bifurcação de recursos. Os aplicativos clássicos de 68k são um exemplo, onde até mesmo o código executável está contido em recursos do tipo 'CODE'. Os binários posteriores do PowerPC armazenam o código executável na bifurcação de dados.

Como os bifurcações de recursos são suportados apenas nos sistemas de arquivos HFS, HFS Plus e APFS, eles não podem ser usados ​​em sistemas operacionais que usam outros sistemas de arquivos. No momento, o HFS é compatível apenas com o sistema operacional Macintosh, o que significa que apenas máquinas que executam o Mac OS podem usar bifurcações de recursos. Mesmo em um sistema Mac OS, bifurcações de recursos não podem ser usados ​​se o Sistema de Arquivos Unix estiver instalado . No sistema de arquivos HFS Plus, que atualmente é o sistema mais comumente usado no Mac OS, as configurações podem ser feitas para permitir que outras bifurcações além das bifurcações de dados e recursos criem um aplicativo "multi-bifurcação". No entanto, como os garfos podem dificultar a troca de arquivos com outros sistemas operacionais, esse recurso não é de uso comum. Mesmo no macOS, os bifurcações de recursos raramente são mais usados.

Atualmente, o macOS oferece suporte a bifurcações de recursos em compartilhamentos SMB do Windows criando um arquivo oculto com os caracteres "._" adicionados no início do nome do arquivo, no mesmo diretório do arquivo de bifurcação de dados.

Identificadores de recursos

Cada recurso tem um OSType identificador (um valor de quatro bytes) e um ID (a assinado 16-bit palavra ), bem como um nome opcional. Existem tipos de recursos padronizados para caixas de diálogo (' DITL), imagens (' PICT'), sons (' snd ') - e até mesmo para binários executáveis (' CODE') que, até o advento do processador PowerPC , eram sem exceção armazenados no recurso garfo. Sub-rotinas para renderizar janelas são armazenadas em seus próprios tipos de recursos (' '), sub-rotinas para renderizar menus em seus (' '), e se houver um tipo de dados que você acha que não se encaixa em nenhuma das categorias padronizadas, você pode simplesmente também use um tipo de sua preferência (por exemplo, ' ') - na verdade, quaisquer quatro caracteres ou valor de 32 bits podem servir como um tipo de recurso. Esse arranjo permitiu aos usuários personalizar facilmente não apenas aplicativos individuais, mas também o próprio sistema operacional, usando ferramentas como ResEdit para modificar os recursos de um arquivo de aplicativo ou qualquer um dos arquivos do sistema. WDEFMDEFJohn

Dentro de um aplicativo ou outro código, os recursos podem ser carregados simplesmente usando uma combinação de seu tipo, ID ou nome, independentemente de como e onde eles são armazenados na bifurcação de recursos. O cliente retorna um Handle para o recurso carregado, que pode então ser acessado como qualquer outro dado baseado em heap. O componente do sistema operacional que facilita isso é o Gerenciador de recursos . Além de abstrair os detalhes do armazenamento de dados dos próprios dados, o Resource Manager também organiza conjuntos de bifurcações de recursos abertos em uma pilha, com o arquivo aberto mais recentemente no topo. Ao tentar carregar um recurso, ele vai olhar primeiro no topo da pilha (talvez a bifurcação de recursos do documento atual), depois o próximo abaixo (a bifurcação de recursos do aplicativo) e depois o próximo (bifurcações de recursos do sistema). Esse arranjo é muito poderoso - permite que recursos locais substituam os mais globais mais abaixo - para que um aplicativo possa fornecer seus próprios ícones ou fontes no lugar dos do sistema padrão, por exemplo. Também permite que um aplicativo carregue recursos do sistema usando a mesma API de qualquer outro recurso, independentemente de onde ou como esse recurso está armazenado - para o aplicativo, todos os recursos estão igualmente disponíveis e fáceis de usar. O sistema reserva IDs de recursos em um determinado intervalo para ajudar a evitar conflitos de recursos decorrentes disso. As APIs do Resource Manager permitem que o programador manipule a pilha e modifique o comportamento de pesquisa.

Editando bifurcações de recursos

Como a bifurcação de recursos pode ser editada com um editor de recursos como ResEdit , ela pode ser usada para localizar e personalizar software . Além disso, a maioria dos editores de recursos permite a edição visual dos dados. No macOS , é possível usar recursos ao desenvolver um aplicativo. No entanto, se o aplicativo precisar ser usado em UFS , também é possível configurá-lo para que toda a bifurcação de recursos seja movida para a bifurcação de dados, usando a configuração Raw Resource File. Os ambientes de desenvolvimento integrados distribuídos gratuitamente pela Apple Inc. , que incluem MPW e Apple Developer's Tools , incluem um compilador chamado Rez. Ele usa uma linguagem dedicada, também chamada de Rez, que pode ser usada para criar uma bifurcação de recursos compilando o código-fonte . Um descompilador, DeRez, que pode ser usado para alterar uma bifurcação de recurso de volta para o código Rez, também está incluído.

Na estrutura da bifurcação de recursos, há um dado denominado "mapa de recursos" que armazena as posições dos itens de dados de recursos. Isso pode ser usado para permitir acesso aleatório aos dados de recursos com base nos IDs e nomes definidos. A bifurcação de recursos pode ser considerada como consistindo essencialmente em dois objetos, o mapa de recursos e os próprios dados de recursos, mas na verdade cada tipo de dados é uma estrutura hierárquica que armazena vários itens de dados. O formato no qual as informações nos dados de recursos são armazenadas é definido com base nos tipos de informações, que são conhecidos como "tipos de recursos". Os dados de recursos geralmente fazem referências a outros tipos de dados.

No macOS, os garfos são nomeados como arquivo /..namedfork/ forkname , por exemplo , o fork do recurso do arquivo IMG_0593.jpg é IMG_0593.jpg / .. namedfork / rsrc. O lscomando oferece suporte a uma -l@opção que lista as bifurcações de um arquivo.

Como uma bifurcação de recurso é acessada

As bifurcações de recursos aparecem como o atributo estendido com.apple.ResourceFork.

Anteriormente, os bifurcações de recursos eram acessados ​​por meio da API 'Resource Manager' . Esta API agora está obsoleta.

Na API obsoleta:

  1. Quando uma bifurcação de recursos é acessada, os dados, incluindo a posição inicial e o comprimento dos dados do recurso e do mapa de recursos, são lidos a partir do cabeçalho.
  2. Se um tipo de recurso a ser lido foi especificado, uma verificação é realizada para garantir que esse tipo esteja presente na lista de recursos e o número de itens de dados que contêm esse tipo e seus deslocamentos na lista de referência de recursos a partir da posição inicial de o mapa de recursos foi encontrado.
  3. O ID do recurso, o deslocamento do nome do recurso, as propriedades do recurso e o deslocamento dos dados da posição inicial dos dados do recurso são encontrados.
  4. Se os dados do recurso com o ID ou nome especificado estiverem presentes nos dados do recurso, o deslocamento obtido acima é acessado, o comprimento dos dados é encontrado e todos os dados armazenados são lidos e retornados como o valor de retorno.

APIs do gerenciador de arquivos, como PBOpenRF()também acesso permitido à bifurcação do recurso bruto; no entanto, eles devem ser usados ​​apenas para aplicativos como a cópia de um arquivo - a Apple alerta fortemente contra o uso da bifurcação de recursos como uma "segunda bifurcação de dados".

A partir da interface POSIX , a bifurcação do recurso pode ser acessada como filename/..namedfork/rsrcou como filename/rsrc; a forma mais curta foi preterida no Mac OS X v10.4 e removida completamente no Mac OS X v10.7 .

Tipos de dados em uma bifurcação de recursos

Os menores elementos que constituem uma bifurcação de recursos são chamados de tipos de dados. Existem vários tipos de dados. Depois que uma bifurcação de recurso é acessada, seu conteúdo pode ser encontrado lendo-o conforme apropriado para os tipos de dados definidos antecipadamente. Colocar definições dentro do programa, informando como os dados devem ser tratados, torna possível armazenar recursos chamados de recursos TMPL também. O uso desse método aumenta a visibilidade dos dados quando visualizados com um programa como ResEdit, tornando a edição posterior mais simples. Como a plataforma Macintosh foi originada com processadores baseados na Motorola (68k e PPC), os dados são serializados em disco no formato big-endian .

A seguir está uma lista dos principais tipos de dados, em ordem alfabética.

Tipo de dados nome real Descrição
BBIT bit binário Representa um único bit booleano (verdadeiro ou falso). Normalmente, o número de BBITs deve ser um múltiplo de 8.
BOOL boleano Representa um valor booleano. Consiste em 2 bytes; 256 é verdadeiro e 0 é falso.
CARACTERES personagem Representa um caractere de um byte.
CSTR Corda C Representa uma string da forma usada na linguagem de programação C : uma string de bytes terminada em nulo .
DLNG inteiro decimal de palavra longa Uma palavra longa decimal (inteiro de 4 bytes). Representa valores entre aproximadamente - 2,1 bilhões e 2,1 bilhões.
HEXD despejo hexadecimal Indica que os dados desta posição até o final são hexadecimais. Isso é usado para representar recursos de código ou dados compactados.
HLNG palavra longa hexadecimal Esses dados são tratados como um valor hexadecimal de 4 bytes. É usado, entre outras coisas, para representar inteiros maiores que 2,1 bilhões, como valores longos sem sinal em C.
PSTR String Pascal Representa uma string Pascal, com o primeiro byte fornecendo o comprimento da string.
TNAM Digite o nome Uma string que representa um valor, como um código do criador , que sempre tem 4 bytes de comprimento.
RECT retângulo Representa as coordenadas dos cantos de um retângulo (superior, esquerdo, inferior, direito). Sempre com 8 bytes de comprimento.

Principais tipos de recursos

Os códigos de tipo abaixo, como os tipos de dados acima, são usados ​​como identificadores de tipo para mais do que bifurcações de recursos: eles são usados ​​para identificar os próprios arquivos, para descrever dados na área de transferência e muito mais.

Observe que os tipos devem ter 4 bytes de comprimento, então tipos como snd e STR na verdade têm um espaço (0x20) no final.

Nome do tipo de recurso nome real Descrição
alis apelido Armazena um alias para outro arquivo, em uma bifurcação de recurso de um arquivo cujo bit de atributo "alias" está definido
ALRT alerta Define a forma de uma caixa de alerta de aplicativo
APPL aplicativo Armazena informações de aplicativo
BNDL agrupar Define dados como um ícone de tipo de arquivo usado em um aplicativo
cicn ícone de cor Define um ícone de cor usado nos dados
desordem tabela de consulta de cores Define uma paleta de cores usada nos dados
CNTL ao controle Define os detalhes de um componente posicionado em uma janela
CÓDIGO recurso de código Armazena o código de máquina para o programa
CURS cursor Define a forma de um cursor monocromático (quadrado de 8 × 8 bits)
DITL lista de itens da caixa de diálogo Define um componente de uma janela
DLOG diálogo Define a forma de uma caixa de diálogo para um aplicativo
FREF referência de arquivo Define um tipo de arquivo gerenciado por um aplicativo
hfdr ícone balão ajuda Define o conteúdo e a forma do balão de ajuda exibido quando o cursor passa sobre o arquivo no Finder
icl8 Lista de ícones de 8 bits Define um ícone exibido no Finder
icns Lista de ícones de 32 bits Define um ícone exibido no Finder
ÍCONE ícone Define um item monocromático usado nos dados
Gentil Descrição do arquivo Define uma descrição de um tipo de arquivo
MBAR Barra de menu Define um menu e uma barra de menus para um aplicativo
MDEF definição do menu Define um menu para um aplicativo. Também pode ser usado para definir menus com formas complexas, como paletas de cores.
CARDÁPIO cardápio Define os itens de menu em um aplicativo
MooV filme Armazena um filme QuickTime
abrir abrir Define um tipo de arquivo que o aplicativo pode abrir
PICT foto Armazena uma imagem PICT contida no arquivo
PREF preferência Armazena as configurações de ambiente para um aplicativo
snd som Armazena um som usado no arquivo
STR fragmento Armazena uma string ou dados hexadecimais usados ​​no arquivo
STR # lista de cordas Armazena várias strings usadas no arquivo
estilo estilo Define informações de estilo, como fonte, cor e tamanho do texto
TEXTO texto Armazena texto
TMPL modelo Define o formato dos dados do recurso
versos versão Define a versão ou região de uso do arquivo
WDEF definição de janela Define uma janela para o aplicativo. Janelas de uma forma não especificada também podem ser definidas.
VENTO janela Define a forma de uma janela de aplicativo

Editores de recursos principais

ResEdit
Distribuído gratuitamente pela Apple. Pode ser usado para edição visual de dados de recursos. Se a estrutura de dados for conhecida, ela pode exibir uma gama de diferentes tipos de dados em um formato visual. Não funciona no macOS moderno.
Resorcerer
Caro, mas popular, pois pode ser usado para edição visual de muitos mais tipos de dados do que ResEdit.
HexEdit
Um editor binário, que na verdade é normalmente mais usado para editar a bifurcação de dados do que a bifurcação de recursos.
ResKnife
Editor de código aberto para Mac OS X ; não é mais mantido.
Rezycle
Uma ferramenta macOS que extrai recursos de uma bifurcação de recursos em arquivos binários separados enquanto converte muitos tipos em formatos adequados para o desenvolvimento moderno.
resource_dasm
Um extrator de recursos de código aberto para macOS, também capaz de converter muitos recursos em formatos modernos.

Problemas de compatibilidade

A complexidade da programação com bifurcações de recursos levou a problemas de compatibilidade ao acessar outros sistemas de arquivos por meio de protocolos de compartilhamento de arquivos, como AFP , SMB , NFS e FTP , ao armazenar em volumes não-HFS ou ao transmitir arquivos para outros sistemas de outras maneiras ( como por e-mail). O protocolo AFP oferece suporte nativo a Resource Forks e, portanto, bifurcações de recursos são normalmente transmitidas para esses volumes no estado em que se encontram e armazenados pelo servidor de forma transparente para os clientes. O protocolo SMB oferece suporte a um sistema de metadados de arquivo semelhante aos forks do Macintosh, conhecidos como Fluxos de dados alternativos (ADSes daqui em diante). O macOS não oferecia suporte ao armazenamento de bifurcações de recursos em ADSes em volumes SMB por padrão até o Mac OS X v10.6 . Em versões anteriores do sistema operacional, incluindo versões atualizadas de 10.6, esse recurso pode ser habilitado com uma alteração de parâmetro ou criando um arquivo especial.

Os protocolos de compartilhamento de arquivos em rede, como NFSv3 e FTP, não têm um conceito de metadados de arquivos e, portanto, não há como armazenar bifurcações de recursos nativamente. Isso também é verdadeiro ao gravar em certos tipos de sistemas de arquivos locais, incluindo UFS e em volumes SMB onde o suporte para Fluxo de Dados Alternativo não está habilitado. Nesses casos, o macOS armazena metadados e bifurcações de recursos usando uma técnica chamada AppleDouble , na qual a bifurcação de dados é gravada como um arquivo e a bifurcação de recursos e os metadados são gravados como um arquivo totalmente separado precedido por uma convenção de nomenclatura "._". Por exemplo: ExampleFile.psd conteria a bifurcação de dados e ._ExampleFile.psd conteria a bifurcação de recursos e metadados.

Podem surgir problemas de compatibilidade porque o macOS lidará com o armazenamento de bifurcações de recursos de maneira diferente, dependendo da versão do macOS, das configurações e do tipo de sistema de arquivos. Por exemplo, em uma rede SMB com uma mistura de clientes 10.5 e 10.6. Um cliente 10.6 recém-instalado procurará e armazenará bifurcações de recursos em um volume SMB em ADSes, mas o cliente 10.5 irá (por padrão) ignorar ADSes e usar o formato AppleDouble para lidar com bifurcações. Se um servidor de arquivos suportar AFP e NFS, os clientes que usam NFS armazenarão arquivos no formato AppleDouble , enquanto os usuários AFP armazenarão a bifurcação de recursos nativamente. Nesses casos, às vezes a compatibilidade pode ser mantida forçando os clientes a usar ou não usar o formato AppleDouble .

Muitos servidores de arquivos que fornecem suporte AFP não suportam nativamente bifurcações de recursos em seus sistemas de arquivos locais. Nesses casos, os garfos podem ser armazenados de maneiras especiais, como arquivos com nomes especiais, diretórios especiais ou até mesmo fluxos de dados alternativos.

Outro desafio é preservar bifurcações de recursos ao transmitir arquivos usando aplicativos sem reconhecimento de bifurcação de recursos ou com certos métodos de transferência, incluindo e-mail e FTP. Vários formatos de arquivo, como MacBinary e BinHex , foram criados para lidar com isso. Ferramentas de sistema de linha de comando SplitForkse FixupResourceForkspermitem nivelamento manual e mesclagem de bifurcações de recursos. Além disso, um servidor de arquivos que busca apresentar sistemas de arquivos a clientes Macintosh deve acomodar a bifurcação de recursos, bem como a bifurcação de dados dos arquivos; Os servidores UNIX que fornecem suporte AFP geralmente implementam isso com diretórios ocultos.

Os aplicativos mais antigos escritos com a API Carbon têm um problema potencial ao serem transferidos para os Macs Intel atuais . Embora o Gerenciador de recursos e o sistema operacional saibam como desserializar dados corretamente para recursos comuns como ' snd ' ou ' moov', os recursos criados usando recursos TMPL devem ser trocados manualmente por bytes para garantir a interoperabilidade do arquivo entre as versões PPC e baseadas em Intel de um aplicativo. (Embora o mapa de recursos e outros detalhes de implementação sejam big-endian , o Resource Manager por si só não tem nenhum conhecimento do conteúdo de um recurso genérico e, portanto, não pode realizar a troca de bytes automaticamente.)

Até o advento do Mac OS X v10.4 , os utilitários de linha de comando padrão do UNIX no macOS (como cpe mv) não respeitavam bifurcações de recursos. Para copiar arquivos com bifurcações de recursos, era necessário usar dittoou CpMac e MvMac.

Outros sistemas operacionais

O conceito de um gerenciador de recursos para objetos gráficos, para economizar memória, se originou no pacote OOZE na Xerox Alto em Smalltalk-76. O conceito agora é amplamente universal em todos os sistemas operacionais modernos. No entanto, o conceito de bifurcação de recursos permanece peculiar ao Macintosh. A maioria dos sistemas operacionais usa um arquivo binário contendo recursos, que é então "anexado" ao final de um arquivo de programa existente. Esta solução é usada no Microsoft Windows, por exemplo, e soluções semelhantes são usadas com o X Window System , embora os recursos sejam freqüentemente deixados em um arquivo separado.

O NTFS do Windows NT pode suportar bifurcações (e também pode ser um servidor de arquivos para arquivos Mac), o recurso nativo que fornece esse suporte é chamado de fluxo de dados alternativo . Os recursos do sistema operacional Windows (como a guia Resumo padrão na página Propriedades para arquivos que não são do Office) e os aplicativos do Windows são usados ​​e a Microsoft estava desenvolvendo um sistema de arquivos de última geração que tem esse tipo de recurso como base.

As primeiras versões do BeOS implementavam um banco de dados dentro do sistema de arquivos, que poderia ser usado de maneira análoga a uma bifurcação de recursos. Problemas de desempenho levaram a uma mudança em versões posteriores de um sistema de atributos complexos do sistema de arquivos. Sob esse sistema, os recursos eram tratados de uma maneira um pouco mais análoga ao Mac.

O AmigaOS não usa arquivos bifurcados. Seus arquivos executáveis são divididos internamente em uma estrutura modular de grandes peças ( hunk ) capazes de armazenar código, dados e informações adicionais. Da mesma forma, os arquivos de dados e projetos têm uma estrutura de blocos codificada no padrão IFF . Outros tipos de arquivo são armazenados de forma semelhante a outros sistemas operacionais. Embora não seja estritamente uma bifurcação de recursos, o AmigaOS armazena metadados em arquivos conhecidos como .infoarquivos. .infoos arquivos podem ser identificados pela .infoextensão; por exemplo, se você salvar um projeto em um disco, dois arquivos serão salvos MyProjecte MyProject.info. MyProjectseriam os dados reais do projeto e MyProject.infoconteriam o ícone do projeto, informações sobre qual programa é necessário para abrir o projeto (uma vez que não há vinculação de aplicativos no AmigaOS), opções especiais do projeto e comentários do usuário. .infoos arquivos são invisíveis na área de trabalho do Amiga ( Workbench ). O ícone na área de trabalho, retirado do .infopróprio, é a metáfora da interface por meio da qual o usuário interage tanto com o projeto em si quanto com o .infoarquivo associado . Uma caixa de diálogo acessível ao clicar com o botão direito do mouse no ícone permite que o usuário veja e modifique os metadados presentes no .infoarquivo. .infoos arquivos podem ser vistos como arquivos individuais na interface da linha de comando ou em um gerenciador de arquivos . Clones AmigaOS modernos ( AROS , MorphOS e AOS4 ) herdam a estrutura (completa com metadados) dos .infoarquivos de versões mais antigas do AmigaOS e também podem aceitar arquivos gráficos PNG padrão como bitmaps de ícone em seus .infoarquivos.

Sistemas operacionais NeXT NeXTSTEP e OPENSTEP , seu sucessor, macOS e outros sistemas como RISC OS implementaram outra solução. Nesses sistemas, os recursos são deixados em um formato original, por exemplo, as imagens são incluídas como arquivos TIFF completos, em vez de serem codificadas em algum tipo de contêiner. Esses recursos são então colocados em um diretório junto com o código executável e "dados brutos". O diretório (denominado " pacote " ou " diretório do aplicativo ") é então apresentado ao usuário como o próprio aplicativo. Esta solução fornece todas as mesmas funcionalidades da bifurcação de recursos, mas permite que os recursos sejam facilmente manipulados por qualquer aplicativo - um "editor de recursos" (como ResEdit ) não é necessário. Na interface da linha de comandos, o pacote parece ser um diretório normal. Essa abordagem não era uma opção no Mac OS clássico , uma vez que o sistema de arquivos ( MFS ) não suportava diretórios de catálogo separados. Quando o suporte a arquivos de catálogo foi incluído no Mac OS, com o sistema de arquivos HFS, a bifurcação de recursos foi mantida. O macOS mantém a API clássica do Resource Manager como parte de suas bibliotecas Carbon para compatibilidade com versões anteriores. No entanto, os próprios recursos agora podem ser armazenados em arquivos de dados separados dentro do sistema de arquivos - o Resource Manager agora oculta essa mudança de implementação do código do cliente.

Veja também

Referências

links externos