《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中,可以灵活地在两种模式之间进行选择。

相关文章
|
28天前
|
数据采集 监控 API
移动端性能监控探索:iOS RUM SDK 技术架构与实践
阿里云 RUM SDK 作为一款性能体验监控采集工具,可以作为辅助 App 运维的强有力助手,提升您的问题排查效率。
178 11
|
2月前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
1212 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
|
2月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
457 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
9月前
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
559 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
6月前
|
人工智能 自然语言处理 开发工具
HarmonyOS NEXT~鸿蒙开发能力:HarmonyOS SDK AI 全解析
本文深入解析HarmonyOS SDK中的AI功能集,涵盖分布式AI引擎、核心组件(NLP、计算机视觉等)及智能决策能力。通过代码示例与开发实践指南,帮助开发者掌握环境配置、性能调优及多场景应用(智能家居、移动办公等)。同时探讨性能优化策略与未来演进方向,助力构建高效分布式智能应用。
662 9
|
8月前
|
存储 开发工具 开发者
揭秘 Microsoft.Docker.SDK:让容器开发更轻松的强大工具揭秘
随着云计算和容器技术的快速发展,`Docker` 已经成为容器化技术的事实标准。`Microsoft` 作为 `Docker` 的主要支持者和参与者,推出了 `Microsoft.Docker.SDK`,旨在帮助开发者更轻松地进行容器开发。本文将深入揭秘 Microsoft.Docker.SDK 的功能、使用方法以及它在容器开发中的应用。
228 13
|
9月前
|
前端开发 JavaScript 开发工具
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
561 5
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
9月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
597 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
9月前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
368 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
9月前
|
JavaScript 编译器 开发工具
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
468 2
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡