近日,来自旧金山的程序员Edgar Aroutiounian为OCamliOS(Jeffrey A. Scofield不久前推出的一个面向iOS的OCamml交叉编译器)创建了一个程序包。InfoQ就此对他进行了采访。

\\

Scofield解释说,许多年来,他一直维护着一系列针对OCaml编译器的补丁。近日,在Gerd Stolpmann的帮助下,这些补丁进入了OCaml官方GitHub库的一个分支。按照Scofield的说法,在某个时候,该分支应该合并到OCaml正式版本中。

\\

基于Scofield和Stolpmann的工作,Aroutiounian将OCamliOS封装成一个OPAM程序包,使开发人员更容易安装它。他提供了一个简单的例子,展示如何将OCmal代码集成到iOS Objective-C应用里。下面的OCaml代码片段将注册一个回调函数,并稍后从Objective-C调用:

\\

let make_string () =\  print_endline \"Hello Word from OCaml\";\  \"Hello World \"\\let () =\  Callback.register \"make_string\" make_string

\\

#define CAML_NAME_SPACE\\#import \\#include \#include \\int main (int argc, char **argv)\{\  caml_startup(argv);\  caml_callback(*caml_named_value(\"make_string\"), Val_unit);\  NSLog(@\"Now using objective-c code\");\  return 0;\}

\\

OCaml代码可以编译成一个独立的iOS可执行文件(不适合创建通过应用商店发布的应用)或者一个C静态库。目前,唯一可以在OCaml中使用的程序包是它的标准库。将来会增加对其他程序包的支持。

\\

为了了解更多有关opam-ios和OCaml for iOS的信息,InfoQ采访了Aroutiounian。

\\

opam-ios究竟带来了什么?

\\

\

它为程序员带来了方便。OPAM是一个高级的OCaml包管理器。我想让iOS OCaml编译器成为OCaml世界的一等公民。

\

\\

使用opam-ios能够为iOS应用开发带来什么好处?按照您的设想,通过opam-ios使用OCaml的iOS应用是个什么样子?

\\

\

好处是,OCaml是一种真正的函数式编程语言,从创建之初就遵循这一理念。它非常灵活,需要的话,可以使用C调用Objective-C,实现某些已有代码的重用,例如GUI代码。按照我的设想,使用OCaml实现业务逻辑,Objective-C仅用于GUI展示,虽然OCaml也支持面向对象编程,而我也可以将Objective-C对象封装成OCmal对象。

\

\\

可以认为OCaml对iOS的支持已经成熟了吗?您接下来计划增加什么特性?

\\

\

我并没有做为这个iOS编译器编写补丁这种艰苦的工作。基本情况是,苹果使用了一个老版本的ARM汇编编译器,从根本上讲,还是一个派生版本。因此,与Linux汇编编译器生成的ARM程序相比,他们的ARM汇编程序略有不同。所以,Gerd Stolpmann及来自Psellos.com的朋友们才是真正的英雄,是他们提供的编译器和补丁让它可以投入使用并具备了重现性。所以现在,这还是该编译器的一个补丁版本,但很快它将正式成为该编译器的一部分。

\\

所以,我接下来准备增加的特性是为每个版本创建更多的程序包。例如,现在仅能支持到iOS SDK 8.3,但我可以增加更多的编译器,比如说,支持到SDK 9.2。Jeff在Psellos已经完成了令人惊叹的工作。他刚刚又有新的发布,这次是OCaml 4.02.3,那是最新最棒的版本,适用于iOS SDK 9.2。基本上是最先进的。

\

\\

OCamliOS运行在OS X 10.11上,生成iOS 7.0+代码。Opam-ios可以从OCaml包管理器OPAM安装。

\\

查看英文原文:OCaml Now Ready for iOS Development

OCaml已经做好iOS开发准备相关推荐

  1. iOS开发之如何跳到系统设置里的各种设置界面

    一·iOS开发之如何跳到系统设置里的WiFi界面 之前以为,苹果不支持直接从应用跳到系统设置里的WiFi界面.后来发现,这个小功能是可以实现的,而且实现起来并不麻烦.让我们一起来看看吧! 需求 从应用 ...

  2. iOS开发教程:Storyboard全解析-第二部分

    如果你想了解更多Storyboard的特性,那么你就来对了地方,下面我们就来接着上次的内容详细讲解Storyboard的使用方法. 在上一篇<iOS开发教程:Storyboard全解析-第一部分 ...

  3. iOS开发 常见错误

    一.NSAppTransportSecurity 错误提示:NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL ...

  4. iOS 开发面试通关指南:67 个必知问题!

    作者 | Artur Rymarz 译者 | 香槟超新星,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 我们都知道,面试可能会让人感到压力山大--不管你是第一次参加面试的 ...

  5. 零基础如何学习 iOS 开发?

    我创建了一个 CS193P - SwiftUI 和 iOS 开发的学习群组,有兴趣可以加入,群内学习者以北美为主,因此聊天请使用英语,谢谢.加入 Slack 群组 正文: 建议从 SwiftUI 开始 ...

  6. IOS开发入门(6)-自动布局(1)

    这些截取自<IOS开发完全上手>+部分自己的见解 PS:感觉有些概念问题还是要了解一点的 自动布局前言 iPhone和iPod touch设备上的应用程序可以纵向或横向显示内容,并且设备配 ...

  7. 最佳实践(2):iOS开发篇

    本文由 伯乐在线 - 戴仓薯 翻译,dopcn 校稿.未经许可,禁止转载! 英文出处:futurice.欢迎加入翻译组. 这份文档就像软件项目一样,如果我们不维护它就会逐渐腐坏.欢迎大家跟我们一起来维 ...

  8. Android开发固定app图标大小,Android和IOS开发图标、启动页尺寸

    最近项目在做android和ios的项目,设计师让我给出图标的尺寸,于是查了一下尺寸. 一.开发中的实际情况: 第一步:产品经理和UI设计师制定好UI规范,然后开始做图标做颜色做尺寸等一系列和APP界 ...

  9. 【iOS开发】—— SDWebImage源码学习(未完)

    文章目录 什么是SDWebImage? sd_setImageWithURL调用关系 步骤一 步骤三 步骤四 步骤五 步骤六 下载步骤 UIImageView+ WebCache UIView+ We ...

  10. iOS开发入门——基础篇一

    文章目录 1. iOS应用生命周期 1.1 应用程序的架构 1.2 iOS应用的5种状态: 1.2.1做一些操作对应的生命周期调用的顺序 1.2.2全面的生命周期执行流程图 1.3 Main函数入口 ...

最新文章

  1. 【论文】ICLR 2020 九篇满分论文!!!
  2. netbeans使用小记
  3. mysql加入新的从节点怎么配置_MySql主从复制配置
  4. 英语语法---分词短语详解
  5. Python爬虫开发:requests库的使用--session的使用
  6. 记录一次K8s-Flannel插件的坑
  7. Spring Boot实践教程(二):SpringApplication分析
  8. FreeBSD长模式不兼容
  9. runtime java_Java runtime.getruntime()从执行命令行程序获得输出
  10. python服务端语言_使用Python实现简单的服务器功能
  11. 阿里巴巴MySQL DBA面试题答案(欢迎进来讨论)
  12. 苹果计算机如何安装应用软件,Mac下如何安装软件?
  13. JS实现复制到剪贴板功能
  14. alpine日志中文乱码的问题解决方案
  15. 【数字图像处理】Canny边缘检测C语言实现
  16. 普中科技单片机AD电压数模转换。STC89C52和XPT2046 芯片
  17. 在quartus II15.0中调用Modelsim进行时序仿真时出现Rerun the EDA Netlist Writer的原因
  18. cpu插槽类型 产品参数解释
  19. [多目标优化算法]1.NSGA-II——非支配排序遗传算法
  20. hls m3u8文件学习分析

热门文章

  1. 使用原生Java代码生成可执行Jar包
  2. Magnet for mac(专业窗口辅助工具)支持m1
  3. Mac 重装 Apache 后中文目录乱码
  4. CentOS7 Docker 安装 PHP,Mysql,phpmyadmin
  5. cwRsyncServer 从 windows server 2008 同步到 CentOS
  6. iOS底层探索之LLVM(一)——初识LLVM
  7. python模块之re模块
  8. Jersey 2.x 运行项目
  9. Tomcat配置文件server.xml(转)
  10. CacheCloud运维管理平台学习笔记