《MonoTouch开发实践指南》一2.1 iOS SDK概述

简介: 本节书摘来自华章出版社《MonoTouch开发实践指南》一 书中的第2章,第2.1节,作者:(美)Michael Bluestein,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
+关注继续查看

2.1 iOS SDK概述

MonoTouch以iOS SDK为基础,通过开发工具MonoDevelop和它与IB的集成,增加对C#语言的支持。而且,它是基于Mono的.NET实现的,因而带来了许多类库,支持现有的代码以及垃圾回收机制。.NET开发者会觉得与Mono、MonoDevelop一见如故,但除非之前有使用Objective-C和Xcode进行Mac或iOS开发的经验,否则会对iOS SDK和它在MonoTouch中的实现感到陌生。本章将介绍iOS SDK和MonoTouch的工作原理。通过一个示例突出不同MonoTouch的设计要点。首先来认识一下iOS SDK。
如图2-1所示,iOS SDK为Objective-C语言提供了一套丰富的API和工具来开发iOS应用程序。第1章接触过几个工具,所以现在来看看API栈的构成。SDK包括使用Objective-C编写的顶层框架(如果不使用MonoTouch)以及底层不那么抽象的API,提供3D图形、套接字、音频等功能。该层一般使用C和Objective-C混合编程,这取决于要实现的功能。大多数应用程序都会使用Objective-C编写,还要结合称为CocoaTouch的顶层抽象层API,并根据需要,通过基础框架和核心图像的绘图,渗入一些不抽象的底层功能。CocoaTouch由多个框架组成,但最为主要的框架是UIKit。
注意 框架就是一个简单的软件库。从非严格的意义上来说,类似.NET中的组合体(assembly)。
UIKit包含许多用于构建iOS应用界面的类,如按钮、标签、文本框、滑块、表格、工具栏,以及页面视图或图形视图等,以上列出的只是UIKit的部分组件。
注意 如果需要UIKit或其他框架的完整参考文档,可以访问iOS开发者中心中的文档,也可以访问MonoTouch网站里的副本(在MonoTouch框架树中可找到)。
UIKit还定义了许多协议用来响应类中发生的有趣事情。协议类似C#中的接口,但不是所有的方法都要实现。只有在定义时要求实现的方法才需要实现,其他则是可选的。这一点很重要,因为它有助于理解下面将要讲述的MonoTouch设计。它的实现方式与C#中对象的接口实现相类似,这样对象就会在适当的时候调用程序。在Objective-C中协议的实现也是采取这种方式,例如,UIKit中的UIActionSheet类和UIActionSheetDelegate协议,开发人员提供一个UIActionSheetDelegate实现并提交UIActionSheet实例。假定你知道ActionSheet的哪个按钮被单击了并对其做出响应,你就得遵循UIActionSheetDelegate协议在类中执行代码,并将该类的实例的属性设置为UIActionSheet实例的委托(Delegate)属性。这样,当ActionSheet的按钮被单击时,就会调用该代码。这样设计不但UIActionSheet类可重用,还让应用程序开发实现了松耦合的逻辑。这个委托模式的例子在CocoaTouch中很常见,而且MonoTouch完全支持。
在CocoaTouch中,另一种常见的模式是Target-Action模式,该模式允许开发人员对用户与用户界面之间的交互做出响应。这就是CocoaTouch的事件(如一个按钮被触碰)响应机制。在第1章中,我们知道MonoTouch既可以使用所熟悉的、典型的C#风格的事件,也可以使用CocoaTouch风格的动作方法。Target-Action模式会将对象(目标)的方法(动作)关联到另一个对象(通常是UIControl,它是UIKit中许多控件的基类)的事件,且不需要任何子类。在Objective-C中,当用户触碰一个控件,如果该控件的目标对象包含一个特定的操作方法,那么Objective-C会在运行时利用“选择器”发送消息到动作方法。
注意 Objective-C中发送消息的方式类似于C#中的调用方式,区别在于前者是在运行时实现的。
选择器类似于函数指针,当UIControl实例触发事件时,绑定到选择器的关联操作方法就会执行。在这个方法内,可以编写处理代码。该模式非常类似于C#中的事件。在MonoTouch中,可以灵活地在两种模式之间进行选择。

相关文章
|
1月前
|
开发框架 移动开发 前端开发
基于.Net Core开发的支付SDK,简化支付功能开发
基于.Net Core开发的支付SDK,简化支付功能开发
27 0
|
1月前
|
API 开发工具 C#
一套基于 .NET Core 开发的支付SDK集 - paylink
一套基于 .NET Core 开发的支付SDK集 - paylink
|
3月前
|
算法 IDE 开发工具
火爆全网开源额温枪同平台之华大HC32L136 SDK开发入门
火爆全网开源额温枪同平台之华大HC32L136 SDK开发入门
69 1
|
3月前
|
IDE 开发工具 开发者
ESP8266固件SDK开发初体验-打印helloworld
ESP8266固件SDK开发初体验-打印helloworld
55 0
|
3月前
|
网络协议 开发工具 数据安全/隐私保护
ESP8266固件SDK开发之微信配网(AIRKISS)原理(一)
ESP8266固件SDK开发之微信配网(AIRKISS)原理(一)
128 0
|
4月前
|
Java 开发工具 Android开发
逻辑清晰,详解社交源码Android开发SDK
前篇我们讲解了有关如何在IOS平台开发集成SDK,那么今天来给大家简单讲解下如何在社交源码Android客户端上开发集成 SDK。
逻辑清晰,详解社交源码Android开发SDK
|
5月前
|
自然语言处理 API 开发工具
百度语言处理应用技术API:NLP开发SDK的简单调用
百度语言处理应用技术API:NLP开发SDK的简单调用
56 0
|
5月前
|
API PHP 开发工具
漏刻有时API接口实战开发系列(11):腾讯云短信3.0sms开发SDK环境部署及配置的实战总结
漏刻有时API接口实战开发系列(11):腾讯云短信3.0sms开发SDK环境部署及配置的实战总结
133 0
|
5月前
|
Java 测试技术 API
工银e生活开发脱坑日志(9)JAVA版的SDK自动生成msgId,PHP如何生成消息通讯唯一编号msgId
工银e生活开发脱坑日志(9)JAVA版的SDK自动生成msgId,PHP如何生成消息通讯唯一编号msgId
80 0
|
5月前
|
API 开发工具 Windows
M5310-E之SDK开发
build执行编译,build clean清除编译 • win+R进入windows的命令行 • cd到SDK的根目录 • build
48 0
推荐文章
更多