Você terá que recodificar a interface do usuário, não importa o quê. A interface do usuário do OS X é diferente o suficiente para a interface do usuário do iOS para significar que qualquer tentativa menor de portar a interface do usuário direta (como a mencionada pelo Chiron) resultará em um comprometimento menos que perfeito.
Por exemplo:
- Os usuários do OS X esperam que haja um conjunto de menus na barra de menus por meio dos quais você pode acessar a maior parte da funcionalidade. Não há equivalente direto no iOS.
- Os usuários do OS X esperam janelas redimensionáveis.
- Os usuários do OS X esperam poder abrir várias janelas de documentos (se o aplicativo for um aplicativo baseado em documentos).
- Muitos controles de estilo do iOS simplesmente não funcionam bem se o dispositivo de entrada for um mouse.
- Alguns dos controles de estilo do OS X têm uma funcionalidade mais rica, além de serem mais fáceis para o programador usar do que seus "equivalentes" do iOS (compare o NSTableView com o UITableView).
Portanto, considerando que você precisa reformular sua interface do usuário, é necessário separar a funcionalidade da interface do usuário o máximo possível. Isso é de certa forma encorajado no MVC. No entanto, uma maneira de impor isso é separar fisicamente o modelo (a parte M) compilando-o como uma biblioteca estática no iOS e uma estrutura no Mac OS X. Design cuidadoso dos controladores (a parte C) usando talvez protocolos ou delegados pode permitir que você reutilize algum código lá também.
De qualquer forma, a única coisa que você nunca deve fazer (isso se aplica a qualquer aplicativo em qualquer plataforma) é comprometer a interface do usuário em nome da portabilidade.