iOSのアーキテクチャ

a)       iOSのアーキテクチャは階層化されている
最上位レベルでは、iOSはそれが稼働しているハードウェアとアプリケーションの間の仲介役を果たします。アプリケーションがハードウェアと直接やり取りすることはめったにありません。代わりにアプリケーションは、明確に定義された一連のシステムインターフェイスを介してハードウェアとやり取りします。このようなインターフェイスによって、ハードウェアの能力が異なるデバイス上でも一貫性を保って動作するアプリケーションを容易に作成できます。
iOSテクノロジーの実装は、図1-1に示すように、1つのレイヤセットで表現できます。システムの下位の各レイヤには、すべてのアプリケーションが依存する基本的なサービスとテクノロジーがあります。一方、上位レベルの各レイヤには、より高度なサービスとテクノロジーが含まれます。

    図 1-1 iOSのレイヤ

主要階層構造 :

Cocoa Touch

レイヤ

Address Book UI Framework、Event Kit UI Framework、Game Kit Framework、iAd Framework、Map Kit Framework、Message UI Framework、UIKit Framework

Cocoa Touchはいくつかの重要なフレームワークで構成され、大きく「Foundationフレームワーク」と「UIKitフレームワーク」の2つに分けることができる。前者は主に基本的なデータの処理を、後者は主にGUI(グラフィカル・ユーザー・インタフェース)の構築をつかさどる。

Media

レイヤ

Core Graphics、Core Animation、OpenGL ES、Core Text、Image I/O、Assets Library Framework、Media Player Framework、AV Foundation、OpenAL、Core Audio Frameworks、Core Media

Mediaレイヤには、マルチメディア体験を演出することを目的とする、グラフィックス、オーディオ、 およびビデオの各テクノロジーが含まれています。このレイヤのテクノロジーは見た目もサウンドもすばらしいアプリケーションを簡単に開発できるように設計されています。

Core Service

レイヤ

Address Book Framework、CFNetwork Framework、Core Data Framework、Core Foundation Framework、Core Location Framework、Core Media Framework、Core Telephony Framework、Event Kit Framework、Foundation Framework、Mobile Core Services Framework、Quick Look Framework、Store Kit Framework、System Configuration Framework、Block Objects、Grand Central Dispatch  、In App Purchase、Location Services、SQLite、XML Support

Core Servicesレイヤには、アプリケーション向けの基本的なサービスが含まれています。中でも重要 なのは、あらゆるアプリケーションに必要となる基本的な型を定義している、Core Foundationと Foundationフレームワークでしょう。このレイヤには、地理的位置の検出、iCloud、ソーシャルメディア、ネットワークなどを活用するために必要な、個別の技術も組み込まれています。

Core OS

レイヤ

Accelerate Framework、External Accessory Framework、Security Framework、System

Core Servicesレイヤには、アプリケーション向けの基本的なサービスが含まれています。中でも重要なのは、あらゆるアプリケーションに必要となる基本的な型を定義している、Core FoundationとFoundationフレームワークでしょう。このレイヤには、地理的位置の検出、iCloud、ソーシャルメディア、ネットワークなどを活用するために必要な、個別の技術も組み込まれています。

b)       iOSの技術はフレームワークというパッケージとして提供される
Appleでは、フレームワークと呼ばれる特殊なパッケージとしてほとんどのシステムインターフェイスを提供しています。フレームワークは、共有ダイナミックライブラリとそのライブラリをサポートするために必要なリソース(ヘッダファイル、画像、ヘルパアプリケーションなど)を含む1つのディレクトリです。フレームワークはXcode上でアプリケーションプロジェクトに組み込んで使います。

c)       Developer Libraryを自由に活用して開発できる
iOS Developer Libraryはアプリケーション開発における重要なリソースです。また、APIリファレンス、プログラミングガイド、リリースノート、技術ノート、サンプルコードその他、アプリケーション開発に役立つさまざまなヒントやガイダンスが揃っています。
iOS Developer Libraryには、Apple Developer Webサイトから、またはXcodeからアクセスできます。
Xcode上で「Help」>「Documentation and API Reference」を実行すると、Xcodeの資料を扱うウインドウが開きます。ここにはiOSアプリケーションの開発に関する情報が集約されています。資料を閲覧、検索するほか、「しおり」をつけておくことも可能です。

アプリケーションの構成

a)       iOSアプリケーションの主要オブジェクト

    図 2-1 iOSアプリケーションの主要オブジェクト

UIApplicationMain関数は、動作に不可欠なオブジェクトをいくつか用意した後、アプリケーショ ンの実行を開始します。iOSアプリケーションの心臓部に当たるのがUIApplicationオブジェクトで す。システムと、アプリケーションに属する他のオブジェクトとの間で、やり取りを仲介する役割を 果たします。多くのアプリケーションで使われる主なオブジェクトを図 2-1に示し、表 2-1で各オブ ジェクトの役割を説明します。まず注意しておきたいのは、iOSアプリケーションが「モデル-ビュー-コントローラ」アーキテクチャにもとづいて動作する、という事実です。この設計パターンには、アプリケーションのデータやビジネスロジックを、その視覚的表現と分けて管理する、という働きがあります。画面の大きさが異なるさまざまなデバイスで動かすためには、このアーキテクチャが不可欠です。

b)      メイン実行ループ

アプリケーションのメイン実行ループは、ユーザが関与するイベントをすべて処理します。 UIApplicationオブジェクトは起動時にメイン実行ループをセットアップし、これを使ってイベント を処理したり、ビューベースのインターフェイスを更新したりします。名前からも分かるように、ア プリケーションのメインスレッド上で動作します。したがって、ユーザが関与するイベントは、受け 取った順で直列に処理されます。 図 2-2に、メイン実行ループのアーキテクチャと、イベントに応じてアクションが実行される様子を 示します。ユーザはデバイスを介してアプリケーションとやり取りするので、これに関係するイベン トをシステムが収集し、UIKitがセットアップする特別なポートを通してアプリケーションに配信する ようになっています。イベントは内部のキューに入り、メイン実行ループでひとつずつ取り出して、実行コードにディスパッチします。UIApplicationオブジェクトがまずイベントを受け取り、どのように処理するか判断します。タッチイベントは通常、主ウインドウオブジェクトにディスパッチされ、これが次に、タッチイベントが発生したビューにディスパッチします。ほかのイベントも、経路は若干異なるものの、最終的に適切なオブジェクトに渡ります。

    図 2-2 メイン実行ループでのイベント処理

参照:

「iPhoneAppProgrammingGuide 」

「iOSTechOverview」

iOSシステム構成の纏め的更多相关文章

  1. JSP基本_JSPの構成要素、アクション、ディレクティブ

    1.JSPの構成要素[コア要素] JSP文法のコアとなる要素で.サーブレットソースに変換される. ・宣言: <%! - %> (宣言で指定した変数は.Javaの「フィールド変数」になる.ス ...

  2. 【SAPUI5】ODataを構成するもの

    はじめに SAPUI5でアプリケーションを作るにあたり.ODataは避けては通れないトピックです.結構広いテーマなので.5-7回くらいに分けて書きたいと思います.1回目はODataの概要について説明し ...

  3. IOSアプリケーション開発環境の構築

    IOSアプリケーション開発環境の要求 1) IOSシステムの構造はそのようになっています: 2) ハードウエアの方の要求: コンピューター a)    デュアルコアCPU b)    8 gメモリ(開 ...

  4. 怎样創建 iOS 展開式 UITableView?

    原文:http://www.appcoda.com.tw/expandable-table-view/ 译者:kmyhy(appcoda的驻站译者) 幾乎全部的 App 都會以導航的方式向用戶展示多個 ...

  5. IOS框架和服务

    在iOS中框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件,以及图像.声音文件等其他资源.共享资源库定义应用程序可以调用的函数和方法. iOS为应用程序开发提供了许多可使用的框架 ...

  6. [iOS 主要框架的总结]

    原文地址:http://blog.csdn.net/GooHong/article/details/28911301 在iOS中框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件, ...

  7. iOS 的基本框架

    在iOS中框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件,以及图像.声音文件等其他资源.共享资源库定义应用程序可以调用的函数和方法.    iOS为应用程序开发提供了许多可使用 ...

  8. unity与ios交替

    unity和ios的相互作用是更简单的.直接出口xcodeproject,这个大家都知道如何操作,如果需要二次开发ios码成unity,事实上,整合非常easy找到出口xcodeproject内iPh ...

  9. hbuilder ios 打包失败,无法导入p12证书的解决方案

    问题描述: 在profile文件和私钥证书通过hbuilder ios 打包成功过的前提下,突然遇到打包失败的问题,问题详情是无法导入p12证书. 探索过程: 本着遇到问题先自省的态度,重复打包了几次 ...

随机推荐

  1. 怎样克服 JavaScript 框架疲劳?

    [编者按]Tero Parviainen 著有 Build Your Own AngularJS,曾两次组织 Clojure CUP 竞赛,在 Twitter 上有近两千名关注者. 在本文中.Tero ...

  2. 支持“***Context”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。

    在用VS进行MVC开发的过程中遇到如下问题: 支持“***Context”上下文的模型已在数据库创建后发生更改.请考虑使用 Code First 迁移更新数据库(http://go.microsoft ...

  3. Hrbust1328 相等的最小公倍数 (筛素数,素因子分解)

    本文出自:http://blog.csdn.net/svitter/ 题意: 求解An 与 An-1是否相等. n分为两个情况-- 1.n为素数, 2.n为合数. =  =好像说了个废话..素数的时候 ...

  4. Html学习笔记4

    <span style="font-size:18px;">超链接: 1 标签 语法: <a href="链接跳转后的地址 " >链接文 ...

  5. 固定ip

    192.168.1.111 255.255.255.0 192.168.1.1 8.8.8.8 202.96.134.33

  6. BaseAdapter优化深入分析

    BaseAdapter是一个数据适配器,将我们提供的数据格式化为ListView可以显示的数据,BaseAdapter的优化直接影响到ListView的显示效率. 我们都知道,ListView自带有回 ...

  7. android之AlertDialog 点击其他区域自动消失

    遇到一个问题记录下来,在开发中使用了AlertDialog,想点击屏幕其他区域的时候让这个dialog消失,一开始不做任何设置,在小米手机可以正常显示,但是在三星中却有问题,后来发现少了一个属性: V ...

  8. Android(java)学习笔记177:BroadcastReceiver之 应用程序安装和卸载 的广播接收者

           国内的主流网络公司(比如网易.腾讯.百度等等),他们往往采用数据挖掘技术获取用户使用信息,从而采用靶向营销.比如电脑上,我们浏览网页的时候,往往会发现网页上会出现我们之前经常浏览内容的商 ...

  9. GUI编程笔记(java)09:GUI控制文本框只能输入数字字符案例

    1.首先我们看看我的需求,如下: 控制文本框只能输入数字字符   2.源代码: package cn.itcast_07; import java.awt.FlowLayout; import jav ...

  10. Tomcat 的 SSL 配置

    本教程使用 JDK 6 和 Tomcat 7,其他版本类似. 基本步骤: 使用 java 创建一个 keystore 文件 配置 Tomcat 以使用该 keystore 文件 测试 配置应用以便使用 ...