Eu sou bastante novo para xcode e objetivo-c. Eu quero fazer uma pergunta muito básica.
Vi que, ao "vincular o binário a bibliotecas" nas configurações do projeto, existem diferenças sobre a estrutura e as bibliotecas, importadas de outros projetos no espaço de trabalho.
Primeira pergunta, por que existe uma estrutura? E por que existe uma biblioteca? Minha biblioteca não pode ser uma estrutura?
E, em um arquivo .h , como posso chamar classes da minha biblioteca estática importada?
Suponho que deve haver um prefixo, mas não o encontrei. Nem "ProjName / Myclass.h" estão funcionando.
Por favor, seja o mais específico possível.
obrigado
objective-c
xcode4
static-libraries
Leonardo
fonte
fonte
Respostas:
A maior vantagem que uma estrutura tem sobre as bibliotecas estáticas é que elas agem como uma maneira pura de empacotar o binário da biblioteca compilada e quaisquer cabeçalhos relacionados. Eles podem ser inseridos no seu projeto (assim como as estruturas internas do SDK, como Foundation e UIKit) e devem funcionar (na maioria das vezes).
A maioria das estruturas contém bibliotecas dinâmicas; estruturas criadas no Xcode usando o modelo do Mac Framework criarão uma biblioteca dinâmica. O iPhone não suporta estruturas dinâmicas, motivo pelo qual se tornou comum que bibliotecas reutilizáveis de código iOS fossem distribuídas como bibliotecas estáticas.
Bibliotecas estáticas são boas, mas requerem um pouco de trabalho extra por parte do usuário. Você precisa vincular seu projeto à biblioteca e copiar os arquivos de cabeçalho no seu projeto ou referenciá-los em algum lugar, definindo os caminhos de pesquisa de cabeçalho apropriados nas configurações de construção.
Então: em resumo, minha opinião é que a melhor maneira de distribuir sua biblioteca é como uma estrutura. Para criar uma estrutura "estática" para iOS, você pode essencialmente usar uma estrutura normal e substituir o binário pela sua biblioteca estática compilada. É assim que distribuo uma de minhas bibliotecas, Resty , e é como pretendo distribuir minhas bibliotecas no futuro.
Você pode querer olhar para o Rakefile fornecido nesse projeto (caso não saiba, Rake é o equivalente a Make de Ruby). Eu tenho várias tarefas para compilar meu projeto (usando
xcodebuild
) e empacotá-las como uma estrutura estática para iOS. Você deve achar isso útil.Como alternativa, você pode usar esses modelos do Xcode 4 para criar uma estrutura iOS.
Atualização 9 de dezembro de 2013 : esta é uma resposta popular, por isso pensei em editar para dizer que minha primeira opção para distribuição de bibliotecas mudou. Minha primeira escolha para qualquer biblioteca de terceiros como consumidor ou produtor é o CocoaPods. Eu distribuo minhas bibliotecas usando CocoaPods e ofereço uma biblioteca estática pré-compilada com cabeçalhos como opção de fallback.
fonte
basicamente, estruturas são bibliotecas e fornecem um mecanismo útil para trabalhar com elas. Se você olhar "dentro" de uma estrutura, é apenas um diretório que contém uma biblioteca estática e arquivos de cabeçalho (em alguma estrutura de pastas com metadados).
Se você deseja criar sua própria estrutura, é necessário criar uma "biblioteca estática" e compactá-la de uma maneira específica. veja esta pergunta
Em geral, o framworks em plataformas é usado para comportamento reutilizável, onde você adiciona seu próprio código "em uma estrutura existente". se você quiser ter alguma funcionalidade específica, poderá usar uma biblioteca (por exemplo, three20) e empacotá- la em seu aplicativo distribuível
fonte