Mac技术预览之<1>关于为Mac开发应用
2015-09-24 19:45
543 查看
OS X操作系统将一个稳定的内核与先进的技术结合起来,以此来帮助你开发Mac平台下世界级的产品。清楚这些技术以及用法能让你的开发过程更顺利,系统会让你回去关键的OS X特点。
这篇教程会向你介绍开发Mac软件的系列知识:描述许多你可以用来开发软件的技术,和向你指出这些技术信息所在的地方,但是不会描述用户级别的系统特点,和那些对开发软件没有用的知识。
1.OS X有一个层级架构,每个层都拥有关键技术
了解OS X一系列层的实现是很有帮助的,系统更低的层会提供所有软件依赖的基本服务,紧跟着(更高)的层会包含构建于低层的更复杂服务和技术。
一种技术所在的层越低,它提供的服务就越特别。通常,更高层中的技术会与低层的技术合并来提供常见的应用行为。我们应该最先使用最高级别的编程接口来满足你的应用要求。
Cocoa(应用层):包含哪些构建应用界面的技术,用来对用户事件进行响应,和管理应用的行为;
Media(媒体层):包含了特定的技术,用来播放、录制和编辑音频媒体,以及渲染2D和3D图形、动画技术。
Core Services(核心服务层):包含了许多基本的服务和技术,从ARC(自动引用计数)、低级别的网络通信技术,到字符串操作和数据格式化。
Core OS(核心系统层):定义了编程接口,这些接口与硬件、网络有关联,当然,这个层还提供了在电脑上CPU和GPU进行高性能计算的接口。
Kernel (内核)和 Device Driver(设备驱动层):包含了内核环境,设备驱动,BSD库函数和其他低级别的组件。这个层包含了对文件系统、网络、安全、进程间通信、编程语言、设备驱动和内核扩展的支持。
相关章节:
Cocoa 应用层、媒体层、核心服务层、核心系统层、内核与设备驱动层
2.你可以为Mac创建许多不同类型的软件
使用开发者工具和系统框架,你可以为Mac开发许多类型的软件,包括以下的部分:
Apps(应用程序):应用程序可以帮助用户完成任务,例如创建内容和管理数据,与其他人联系或者娱乐之类的。OS X 提供了大量的系统技术,比如,应用可以拓展,你可以利用这种技术来拓展你应用程序的能力和增进用户体验。
Frameworks and libraries(框架和库):框架和库能够让不同的应用程序进行代码分享。
Command-line tools and daemons(命令行工具和后台驻留代码):命令行工具允许精通计算机的用户在终端应用程序的命令行环境中管理数据。后台驻留程序一般用来作为处理客户端请求的服务器。
App plug-ins and loadable bundles(应用程序插件和可加载的资源包):插件继承了其他应用程序的功能;而资源包包含了应用程序在运行期间动态加载的代码和资源。
System plug-ins(系统插件):系统插件,比如音频单元,内核扩展,I/O工具集设备驱动,偏好设置面板,Sportlight导入器,和屏幕保护程序,继承了系统的能力。
相关的章节:
为Mac平台创建软件产品
3.转向Cocoa Touch应用的时候,注意到API之间的相似点和区别
将Cocoa和Cocoa Touch应用程序叠加在一起的时候,他们有许多的相似点。每个平台上的一些框架是相同的(或者几乎相同),包括
其他的迁移任务可能更具挑战性,因为它们依赖于在不同平台具有向异性的框架。例如,迁移控制器对象和修改用户界面是非常有挑战性的,因为它们依赖于
相关章节:
从Cocoa Touch迁移过来
4.你也应当看看
OS X开发者资源库包含了文档,实例代码,教程和其他编写OS X应用的信息。你可以访问OS X开发者资源库通过Apple Developer 网站或者在Xcode中。在Xcode中,选择”Window”–>”Documentation and API Reference”来查看下文档和其他资源。
除了OS X开发者资源库,还有其他资源信息关于如何开发不同种类的Mac应用程序。
Apple Open Source。苹果让开发者社区能够获取OS X的主要组件,包括UNIX内核。为了了解苹果对开源发展的贡献,请访问Open Source Development Resources,为了了解更多关于特定的开源项目,例如Bonjour和Webkit,请访问Mac OS Forge
BSD。
本文翻译自:About Developing for Mac
这篇教程会向你介绍开发Mac软件的系列知识:描述许多你可以用来开发软件的技术,和向你指出这些技术信息所在的地方,但是不会描述用户级别的系统特点,和那些对开发软件没有用的知识。
1.OS X有一个层级架构,每个层都拥有关键技术
了解OS X一系列层的实现是很有帮助的,系统更低的层会提供所有软件依赖的基本服务,紧跟着(更高)的层会包含构建于低层的更复杂服务和技术。
一种技术所在的层越低,它提供的服务就越特别。通常,更高层中的技术会与低层的技术合并来提供常见的应用行为。我们应该最先使用最高级别的编程接口来满足你的应用要求。
Cocoa(应用层):包含哪些构建应用界面的技术,用来对用户事件进行响应,和管理应用的行为;
Media(媒体层):包含了特定的技术,用来播放、录制和编辑音频媒体,以及渲染2D和3D图形、动画技术。
Core Services(核心服务层):包含了许多基本的服务和技术,从ARC(自动引用计数)、低级别的网络通信技术,到字符串操作和数据格式化。
Core OS(核心系统层):定义了编程接口,这些接口与硬件、网络有关联,当然,这个层还提供了在电脑上CPU和GPU进行高性能计算的接口。
Kernel (内核)和 Device Driver(设备驱动层):包含了内核环境,设备驱动,BSD库函数和其他低级别的组件。这个层包含了对文件系统、网络、安全、进程间通信、编程语言、设备驱动和内核扩展的支持。
相关章节:
Cocoa 应用层、媒体层、核心服务层、核心系统层、内核与设备驱动层
2.你可以为Mac创建许多不同类型的软件
使用开发者工具和系统框架,你可以为Mac开发许多类型的软件,包括以下的部分:
Apps(应用程序):应用程序可以帮助用户完成任务,例如创建内容和管理数据,与其他人联系或者娱乐之类的。OS X 提供了大量的系统技术,比如,应用可以拓展,你可以利用这种技术来拓展你应用程序的能力和增进用户体验。
Frameworks and libraries(框架和库):框架和库能够让不同的应用程序进行代码分享。
Command-line tools and daemons(命令行工具和后台驻留代码):命令行工具允许精通计算机的用户在终端应用程序的命令行环境中管理数据。后台驻留程序一般用来作为处理客户端请求的服务器。
App plug-ins and loadable bundles(应用程序插件和可加载的资源包):插件继承了其他应用程序的功能;而资源包包含了应用程序在运行期间动态加载的代码和资源。
System plug-ins(系统插件):系统插件,比如音频单元,内核扩展,I/O工具集设备驱动,偏好设置面板,Sportlight导入器,和屏幕保护程序,继承了系统的能力。
相关的章节:
为Mac平台创建软件产品
3.转向Cocoa Touch应用的时候,注意到API之间的相似点和区别
将Cocoa和Cocoa Touch应用程序叠加在一起的时候,他们有许多的相似点。每个平台上的一些框架是相同的(或者几乎相同),包括
Foundation、
Core Data和
AV Foundation。API的这种相同性让一些迁移工作变得很容易,例如,迁移你的Cocoa Touch 数据模型。
其他的迁移任务可能更具挑战性,因为它们依赖于在不同平台具有向异性的框架。例如,迁移控制器对象和修改用户界面是非常有挑战性的,因为它们依赖于
AppKit和
UIKit,它们分别是Cocoa和CocoaTouch层的基本应用程序框架。
相关章节:
从Cocoa Touch迁移过来
4.你也应当看看
OS X开发者资源库包含了文档,实例代码,教程和其他编写OS X应用的信息。你可以访问OS X开发者资源库通过Apple Developer 网站或者在Xcode中。在Xcode中,选择”Window”–>”Documentation and API Reference”来查看下文档和其他资源。
除了OS X开发者资源库,还有其他资源信息关于如何开发不同种类的Mac应用程序。
Apple Open Source。苹果让开发者社区能够获取OS X的主要组件,包括UNIX内核。为了了解苹果对开源发展的贡献,请访问Open Source Development Resources,为了了解更多关于特定的开源项目,例如Bonjour和Webkit,请访问Mac OS Forge
BSD。
Berkeley Software Distribution(简称BSD),OS X内核环境的一个必要的基于UNIX的部分。在书店有几本非常棒的关于UNIX和BSD的书籍。但你也可以在包含BSD内容的网站上发现额外的信息,例如,The FreeBSD Project
本文翻译自:About Developing for Mac
相关文章推荐
- 杭电2112-HDU Today(最短路)
- 白话经典算法系列之九 从归并排序到数列的逆序数对(微软笔试题)
- 普通的增删改查list View与LinQ:集成化语言增删改查与扩展属性
- ACM学习历程—Hihocoder 1233 Boxes(bfs)(2015北京网赛)
- 自增运算符
- 关于JAVA 类加载器的研究
- Codeforces Round #321 (Div. 2) 580C Kefa and Park(dfs)
- 线程池ThreadPoolExecutor使用简介
- 查看oracle当前连接数(转)
- 任务管理器的实现及源码
- mysql 获取自增id的值的方法
- Java集合框架中List接口的简单使用
- 第二章 证券投资基金概述
- Httpsqs类。
- PAT(甲级)1025
- linux mysql 命令
- android四大组件详解
- Android UI 设计之TitleBar
- 分享DCT,DST,Walsh,Hadamard,Haar和Slant图像处理程序
- spring管理属性配置文件properties——使用PropertiesFactoryBean