Guia de Plataforma iOS iOS
HarbourBuilder puede construir aplicaciones iOS nativas usando controles UIKit, siguiendo la misma API UI_* utilizada para Android. Tu codigo Harbour PRG se compila a codigo maquina arm64 nativo — sin vistas web, sin interpretes.
Arquitectura
El backend iOS usa el mismo patron de inversion del bucle de eventos que Android:
- iOS posee el bucle de eventos —
UIApplicationMain()ejecuta el bucle de eventos Cocoa Touch, no Harbour. - La VM Harbour se inicia dentro del AppDelegate —
application:didFinishLaunchingWithOptions:llama ahb_vmInit()que ejecuta tuMain(). - Las funciones UI_* crean controles UIKit — UILabel, UIButton, UITextField se crean directamente en Objective-C.
- Los eventos click se dispatchan a codeblocks Harbour —
UIButton target/action llama a
hb_evalBlock0().
Requisitos Previos
- macOS con Xcode 15+ instalado
- iOS SDK (instalado via Xcode > Ajustes > Plataformas)
- Harbour para macOS (compilador host para traduccion PRG→C)
- Librerias Harbour para iOS compiladas cruzadamente
Configuracion
Ejecuta el asistente de configuracion desde el menu del IDE: Ejecutar > Asistente de Configuracion iOS
O manualmente desde el terminal:
cd source/backends/ios
./setup-ios-toolchain.sh
Esto verificara:
- Xcode y el SDK iOS estan instalados
- Descargara el runtime del Simulador iOS si falta
- Construira Harbour para iOS (arm64 dispositivo + x86_64 simulador) via
bootstrap-harbour.sh
Compilacion
Desde el IDE: Ejecutar > Ejecutar en iOS
O manualmente:
# Compilar para simulador
./build-ios-app.sh hello_ios.prg simulator
# Compilar para dispositivo
./build-ios-app.sh hello_ios.prg device
Ejecucion en el Simulador
./install-and-run.sh
Referencia API UI_*
| Funcion | Descripcion |
|---|---|
UI_FormNew(cTitle, nW, nH) | Crea UIViewController con UIView raiz |
UI_LabelNew(hParent, cText, nX, nY, nW, nH) | Crea UILabel |
UI_ButtonNew(hParent, cText, nX, nY, nW, nH) | Crea UIButton |
UI_EditNew(hParent, cText, nX, nY, nW, nH) | Crea UITextField |
UI_SetText(hCtrl, cText) | Establece texto del control |
UI_GetText(hCtrl) | Obtiene texto del control |
UI_OnClick(hCtrl, bBlock) | Registra codeblock para click |
UI_SetFormColor(nClr) | Color de fondo del form (BGR) |
UI_SetCtrlColor(hCtrl, nClr) | Color de fondo del control (BGR) |
UI_SetCtrlFont(hCtrl, cFamily, nSize) | Establece fuente |
Formato de Color
Los colores usan el formato Win32 COLORREF: 0x00BBGGRR (BGR),
igual que los backends de Android y Win32, para que tu codigo PRG
sea portable entre plataformas.
Estructura de Archivos
source/backends/ios/
ios_core.m # Backend UIKit (HB_FUNCs + AppDelegate + main)
hello_ios.prg # App de demostracion
bootstrap-harbour.sh # Compilacion cruzada de Harbour para iOS
build-ios-app.sh # Construir .app desde PRG
install-and-run.sh # Instalar y lanzar en simulador
setup-ios-toolchain.sh # Verificar/instalar toolchain