亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

IOS整體架構和MVC布局

2019-11-14 19:45:14
字體:
來源:轉載
供稿:網友

IOS的生態系統

IOS生態系統不僅僅是指產品,更重要的是指 iphone/iPad/iPod/Mac +iCloud+App整個系統,包括Siri (部分設備不支持)、FaceTime、Safari、Game Center、 地圖、Passbook、電話、郵件。蘋果所有移動設備都使用自己的OS,且不能更換電池,不能插內存卡,數據線連電腦后只能通過自家軟件iTunes進行文件的傳輸,只能使用經過蘋果認可的軟件,且軟件也只能從App Store下載,這就組成了 一個封閉的生態圈。

看一組數據:

2012年用戶在App Store的消費總額45億美元左右

2013年用戶在App Store的消費總額超過100億美元

2014年Q1國內IOS游戲市場已突破12億的季度收入

2014年 Q1: 蘋果App Store應用下載量比Google Play 低45%,然而收入超過后者85%,App Store中國區收入比上季度增長70%。 

IOS架構

iOS自下至上可以分為四層:Core OS,Core Services,Media,Cocoa Touch。

Core OS

是用FreeBSD和Mach所改寫的Darwin, 是開源、符合POSIX標準的一個Unix核心。這一層提供了整個iPhone OS的一些基礎功能,比如:硬件驅動, 內存管理,程序管理,線程管理(POSIX),文件系統,網絡(BSD Socket),以及標準輸入輸出等等,所有這些功能都會通過C語言的API來提供。另外,值得一題的是,這一層最具有UNIX色彩,如果你需要把 UNIX上所開發的程序移植到iPhone上,多半都會使用到Core OS的API。核心OS層的驅動也提供了硬件和系統框架之間的接口。然而,由于安全的考慮,只有有限的系統框架類能訪問內核和驅動。iPhone OS提供了許多訪問操作系統低層功能的接口集,iPhone 應用通過LibSystem庫來訪問這些功能,這些接口集如下所示:

  • 線程(POSIX線程);
  • 網絡(BSD sockets);
  • 文件系統訪問;
  • 標準I/O;
  • Bonjour和DNS服務;
  • 現場信息(Locale Information);
  • 內存分配;
  • 數學計算。
許多Core OS技術的頭文件位于目錄<iPhoneSDK>/usr/include/,iPhoneSDK是SDK的安裝目錄。
 

Core Services

在Core OS基礎上提供了更為豐富的功能, 它包含了Foundation.Framework和Core Foundation.Framework, 之所以叫Foundation ,就是因為它提供了一系列處理字串,排列,組合,日歷,時間等等的基本功能。Foundation是屬于Objective-C的API,Core Fundation是屬于C的API。另外Core servieces還提供了其他的功能,比如:Security, Core Location, SQLite, 和Address Book. 其中Security是用來處理認證,密碼管理,按安全性管理的; Core Location是用來處理GPS定位的;SQLLite是輕量級的數據庫,而AddressBook則用來處理電話薄資料的。下面是具體介紹:

(1)電話本框架(AddressBook.framework)

提供了保存在手機設備中的電話本編程接口。開發者能使用該框架訪問和修改存儲在用戶聯系人數據庫里的記錄。

例如,一個聊天程序可以使用該框架獲得可能的聯系人列表,啟動聊天的進程(PRocess),并在視圖上顯示這些聯系人信息等。

 

(2)核心基礎框架(CoreFoundation.framework)

是基于C語言的接口集,提供iPhone應用的基本數據管理和服務功能。該框架 支持如下功能:

  •  Collection數據類型(Arrays、 Sets等);
  •  Bundles;
  •  字符串管理;
  •  日期和時間管理;
  •  原始數據塊管理;
  •  首選項管理;
  •  URL和Stream操作;
  •  線程和運行循環(Run Loops);
  •  端口和Socket通信。

核心基礎框架與基礎框架是緊密相關的,它們為相同的基本功能提供了Objective-C接口。如果開發者混合使用Foundation Objects 和Core Foundation類型,就能充分利用存在兩個框架中的"toll-free bridging"。

toll-free bridging意味著開發者能使用這兩個框架中的任何一個的核心基礎和基礎類型,例如Collection和字符串類型等。每個框架中的類和數據類型的描述注明該對象是否支持toll-free bridged。如果是,它與哪個對象橋接(toll-free bridged)。

 

(3)CFNetwork框架(CFNetwork.framework)

是一組高性能的C語言接口集,提供網絡協議的面向對象的抽象。開發者可以使用 CFNetwork框架操作協議棧,并且可以訪問低層的結構如BSD Sockets等。同時,開發者也能簡化與FTP和HTTP服務器的通信,或解析DNS等任務。使用CFNetwork框架實現的任務如下所示:

  • BSD Sockets;
  • 利用SSL或TLS創建加密連接;
  • 解析DNS Hosts;
  • 解析HTTP協議,鑒別HTTP和HTTPS服務器;
  • 在FTP服務器工作;
  • 發布、解析和瀏覽Bonjour服務。

 

(4)核心位置框架(Core Location Framework)

主要獲得手機設備當前的經緯度,核心位置框架利用附近的GPS、蜂窩基站或Wi- Fi信號信息測量用戶的當前位置。iPhone地圖應用使用這個功能在地圖上顯示用戶的當前位置。開發者能融合這個技術到自己的應用中,給用戶提供一些位置信息服務。

例如可以提供一個服務:基于用戶的當前位置,查找附近的餐館、商店或設備等。

 

(5)安全框架(Security Framework)

iPhone OS除了內置的安全特性外,還提供了外部安全框架,從而確保應用數據的安全性。該框架提供了管理證書、公鑰/私鑰對和信任策略等的接口。它支持產生加密安全的偽隨機數,也支持保存在密鑰鏈的證書和密鑰。對于用戶敏感的數據,它是安全的知識庫(Secure Repository)。CommonCrypto接口也支持對稱加密、HMAC和數據摘要。在iPhone OS里沒有OpenSSL庫,但是數據摘要提供的功能在本質上與OpenSSL庫提供的功能是一致的。

 

(6)SQLite

開發者可以創建本地數據庫文件,并管理這些文件中的表格和記錄。數據庫SQLite為通用的目的而設計,但仍可以優化為快速訪問數據庫記錄。訪問數據庫SQLite的頭文件位于<iPhoneSDK>/usr/include/sqlite3.h,其中<iPhoneSDK>是SDK安裝的目標路徑。

 

(7)支持xml

基礎框架提供NSXMLParser類,解析XML文檔元素。libXML2庫提供操作XML內容的功能,這個開放源代碼的庫可以快速解析和編輯 XML數據,并且轉換XML內容到HTML。訪問libXML2庫的頭文件位于目錄<iPhoneSDK>/usr/include /libxml2/,其中<iPhoneSDK>是SDK安裝的目標目錄。

 

Media層

提供了圖片,音樂,影片等多媒體功能。圖像分為2D圖像和3D圖像, 前者由Quartz2D來支持,后者則是用OpenglES.與音樂對應的模組是Core Audio和OpenAL, Media Player 實現了影片的播放,而最后還提供了Core Animation來對強大動畫的支持。具體介紹如下:

(1)圖像技術(Graphics Technologies)

高質量圖像是所有iPhone應用的一個重要的組成部分。任何時候,開發者可以采用UIKit 框架中已有的視圖和功能以及預定義的圖像來開發iPhone應用。然而,當UIKit 框架中的視圖和功能不能滿足需求時,開發者可以應用下面描述的技術和方法來制作視圖。

     ① Quartz核心圖像框架(CoreGraphics.framework)

包含了Quartz 2D畫圖API,Quartz與在Mac OS中采用的矢量圖畫引擎是一樣先進的。Quartz支持基于路徑(Path-based)畫圖、抗混淆(Anti-aliased)重載、梯度 (Gradients)、圖像(Images)、顏色(Colors)、坐標空間轉換(Coordinate-space Transformations)、pdf文檔創建、顯示和解析。雖然API是基于C語言的,它采用基于對象的抽象表征基礎畫圖對象,使得圖像內容易于保存和復用。

     ② 核心動畫(Core Animation)

Quartz核心框架(QuartzCore.framework)包含CoreAnimation接口,Core Animation是一種高級動畫和合成技術,它用優化的重載路徑(Rendering Path)實現復雜的動畫和虛擬效果。它用一種高層的Objective-C接口配置動畫和效果,然后重載在硬件上獲得較好的性能。Core Animation集成到iPhone OS 的許多部分,包括UIKit類如UIView,提供許多標準系統行為的動畫。開發者也能利用這個框架中的Objective-C接口創建客戶化的動畫。

     ③ OpenGL ES

OpenGL ES框架(OpenGLES.framework)符合OpenGL ES v1.1規范,它提供了一種繪畫2D和3D內容的工具。OpenGL ES 框架是基于C語言的框架,與硬件設備緊密相關,為全屏游戲類應用提供高幀率(high frame rates)。開發者總是要使用OpenGL框架的EAGL接口,EAGL接口是OpenGL ES框架的一部分,它提供了應用的OpenGL ES畫圖代碼和本地窗口對象的接口。

(2)音頻技術(Audio Technologies)

iPhone OS的音頻技術為用戶提供了豐富的音頻體驗。它包括音頻回放,高質量的錄音和觸發設備的振動功能等。iPhone OS的音頻技術支持如下音頻格式:AAC、Apple Lossless(ALAC)、A-law、IMA/ADPCM(IMA4)、Linear PCM、μ-law和Core Audio等。

    ① 核心音頻(Core Audio Family)

核心音頻框架家族(Core Audio family of frameworks)提供了音頻的本地支持,如表16-1所示。Core Audio是一個基于C語言的接口,并支持立體聲(Stereo Audio)。開發能采用iPhone OS 的Core Audio框架在iPhone 應用中產生、錄制、混合和播放音頻。開發者也能通過核心音頻訪問手機設備的振動功能。核心音頻框架:

框架(Framework)

服務(Service)

CoreAudio.framework

定義核心音頻的音頻數據類型

AudioUnit.framework

提供音頻和流媒體文件的

回放和錄制,并且管理音

頻文件和播放提示聲音

AudioToolbox.framework

提供使用內置音頻單元服務,

音頻處理模塊


    ② OpenAL

iPhone OS 也支持開放音頻庫(Open Audio Library, OpenAL)。OpenAL是一個跨平臺的標準,它能傳遞位置音頻(Positional Audio)。開發者能應用OpenAL在需要位置音頻輸出的游戲或其他應用中實現高性能、高質量的音頻。由于OpenAL是一個跨平臺的標準,采用OpenAL的代碼模塊可以平滑地移植到其他平臺。

(3)視頻技術(Video Technologies)

iPhone OS通過媒體播放框架(MediaPlayer.framework)支持全屏視頻回放。媒體播放框架支持的視頻文件格式包括.mov, .mp4,.m4v和.3gp,并應用如下壓縮標準:

    ① H.264 Baseline Profile Level 3.0 video,在30 f/s 的情況下分辨率達到640×480像素。注意:不支持B frames;

    ② MPEG4規范的視頻部分;

    ③ 眾多的音頻格式,包含在音頻技術的列表里,如AAC、Apple Lossless (ALAC)、A-law、IMA/ADPCM(IMA4)、線性PCM、μ-law和Core Audio等。      

 

Cocoa Touch

是Objective-C的API, 其中最核心的部分是UIKit.Framework,應用程序界面上的各種組件,全是由它來提供呈現的,除此之外它還負責處理屏幕上的多點觸摸事件,文字的輸出,圖片,網頁的顯示,相機或文件的存取,以及加速感應的部分等。具體介紹如下:

(1)UIKit框架(UIKit.framework)

包含Objective-C程序接口,提供實現圖形,事件驅動的iPhone應用的關鍵架構。 iPhone OS中的每一個應用采用這個框架實現如下核心功能:

  • 應用管理;
  • 支持圖形和窗口;
  • 支持觸摸事件處理;
  • 用戶接口管理;
  • 提供用來表征標準系統視圖和控件的對象;
  • 支持文本和Web內容;
  • 通過URL scheme與其他應用的集成。

為提供基礎性代碼建立應用,UIKit也支持一些與設備相關的特殊功能,如下所示:

  • 加速計數據;
  • 內建Camera;
  • 用戶圖片庫;
  • 設備名稱和模式信息。

 

(2)基礎框架(Foundation Framework)

支持如下功能:

  •  Collection數據類型(包括Arrays、Sets);
  •  Bundles;
  •  字符串管理;
  •  日期和時間管理;
  •  原始數據塊管理;
  •  首選項管理;
  •  線程和循環;
  •  URL和Stream處理;
  •  Bonjour;
  •  通信端口管理;
  •  國際化。

 

(3)電話本UI框架(Address Book UI Framework)

是一個Objective-C標準程序接口,主要用來創建新聯系人,編輯和選擇 電話本中存在的聯系人。它簡化了在iPhone應用中顯示聯系人信息,并確保所有應用使用相同的程序接口,保證應用在不同平臺的一致性。

 

總結:

盡可能使用高層框架,當我們要開發iPhone程序的時候,首先要現從上層入手,優先使用Objective-C封裝后的庫。

也就是通過 UIKit.framework搭配Foundation.framework來進行開發,而當面對一些比較復雜的功能時,像是多媒體的處理或是繪圖,再往下層去找尋相關的framwork開完成。

 

MVC 布局

其實在 php,包括 java(Struts+Hibernate/Mybatis+Spring)等都有涉及,很常見的一種模式。回憶整理下:

 

目的:

將人機交互從核心功能中分離出來,模型model對用戶來說是不可見的,用戶只需要觀察視圖view,用戶與模型的交互通過控制器controller提供的安全方法來實現 。

MVC(Model-View-Controller)將一個交互式應用程序分成3個組件

模型:包含核心功能和數據 (核心業務邏輯)

視圖:向用戶顯示信息

控制器:處理用戶輸入

 

變更-傳播機制保證了模型和用戶界面之間的一致性 

一個模型可對應多個視圖,如果用戶通過一個視圖的控制器改變了模型中的數據,那么依賴于該數據的其他視圖也應該反映出這樣的變化。一旦模型的數據發生了變化,模型需要通知所有相關的視圖做出相應的變化,一起維護數據的一致性 。

 

模型 model

封裝了內核功能和數據,模型對于用戶來說是不可見的(M與V獨立),模型獨立于特定輸出表示或者輸入方式(M與C獨立) ,用戶只能通過控制器操作模型(C是M與V之間的橋梁) 

 
視圖 view

向用戶顯示信息,不同的視圖使用不同的方法呈現信息,

  • 每個視圖組件都有一個更新函數,這個函數被模型變更通知激活,

  • 被激活(此時模型已經改變)后, 將使得視圖重新和模型一致。

  • 在初始化階段,視圖向模型登記請求變更通知(表),

  • 從模型獲得數據

  • 通過狀態查詢函數實現。

例如:定時刷新

 

控制器 controller

每個視圖有一個相關的控制器組件(一一對應),控制器組件接受事件,并翻譯成輸入,事件如何發送到控制器由用戶界面平臺決定,事件被翻譯成為對模型或者視圖的請求,如果控制器的行為依賴于模型的狀態,那么控制器也需要向模型登記請求變更通知。

例如:用戶點擊按鈕,按鈕的事件響應函數將采取相應的措施處理用戶要求,用戶僅僅通過控制器與系統交互 

 

注意:多個 MVC 可以協同一起工作

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美大肥婆大肥bbbbb| 色在人av网站天堂精品| 国产精品一久久香蕉国产线看观看| 亚洲乱码av中文一区二区| 九九九热精品免费视频观看网站| 日韩久久精品电影| 日本sm极度另类视频| 色琪琪综合男人的天堂aⅴ视频| 91产国在线观看动作片喷水| 日韩久久午夜影院| 欧美专区在线视频| 欧美精品少妇videofree| 日韩欧美在线国产| 日韩成人网免费视频| 这里只有视频精品| 久久久久久久久久亚洲| 国产在线播放91| 欧美性xxxxx极品娇小| 国产精品久久久久久久久久尿| 国产精品久久国产精品99gif| 欧美精品久久久久久久| 久久久久国产精品免费网站| 色偷偷av亚洲男人的天堂| wwwwwwww亚洲| 九九精品在线播放| 亚洲欧美国产日韩天堂区| 亚洲欧美制服丝袜| 欧美电影免费看| 亚洲国产精品免费| 欧美高清视频在线观看| 爱福利视频一区| 国产精品精品一区二区三区午夜版| 午夜精品久久久久久久白皮肤| 久久97久久97精品免视看| 亚洲第一在线视频| 668精品在线视频| 成人国产精品日本在线| 91成人在线播放| 中文字幕亚洲欧美日韩2019| 91社区国产高清| 日韩欧美一区二区在线| 神马久久桃色视频| 欧美激情一区二区三区在线视频观看| 久久国产精品久久国产精品| 菠萝蜜影院一区二区免费| 国产97在线视频| 青青草精品毛片| 国产精品久久久久久久久久免费| 欧美中在线观看| 在线国产精品播放| 久久久综合免费视频| 日本精品视频在线观看| 欧美成人精品在线播放| 色偷偷亚洲男人天堂| 国产精品小说在线| 国语自产精品视频在免费| 亚洲黄页网在线观看| 亚洲男女性事视频| 欧美精品九九久久| 精品国产一区二区三区久久久| 国产噜噜噜噜久久久久久久久| 欧美精品videos性欧美| 青青a在线精品免费观看| 欧美精品生活片| 日韩精品中文字| 韩国欧美亚洲国产| 日韩视频在线一区| 久久久久久18| 亚洲大胆人体视频| 亚洲天堂2020| 国产精品美女www| 国产精品福利在线观看网址| 成人深夜直播免费观看| 日本中文字幕不卡免费| 久久视频国产精品免费视频在线| 国产精品美女在线观看| 欧美一级片免费在线| 亚洲乱码国产乱码精品精天堂| 国产精品扒开腿做爽爽爽男男| 中文国产成人精品| 2021国产精品视频| 日韩精品免费一线在线观看| 麻豆乱码国产一区二区三区| 51久久精品夜色国产麻豆| 亚洲另类欧美自拍| 欧美激情视频三区| 日韩中文字幕在线精品| 欧美天天综合色影久久精品| 一本大道香蕉久在线播放29| 国产精品久久中文| 欧美视频在线免费看| 宅男66日本亚洲欧美视频| 欧美肥婆姓交大片| 日韩高清欧美高清| 精品一区二区电影| 国产欧美一区二区三区久久人妖| 亚洲精品成人网| 国产91色在线|| 国产精品女主播| 欧美视频在线观看 亚洲欧| 精品国产乱码久久久久久虫虫漫画| 91热精品视频| 国产精品美女久久| 精品国产成人av| 欧美精品中文字幕一区| 国产精品极品在线| 在线观看日韩欧美| 欧美日韩国产中文字幕| 亚洲国产一区二区三区在线观看| 欧美性猛交xxxx富婆| 久久精品这里热有精品| 麻豆国产va免费精品高清在线| 久久久精品国产一区二区| 欧美日韩一区二区在线播放| 欧美成年人视频网站| 欧美理论电影在线播放| 久久人人爽人人爽人人片av高清| 成人av色在线观看| 国产亚洲在线播放| 69视频在线播放| 精品人伦一区二区三区蜜桃网站| 美女av一区二区三区| 欧美日韩999| 久色乳综合思思在线视频| 国产精品视频免费在线观看| 国产一区二区三区免费视频| 亚洲女同精品视频| 国产在线视频不卡| 久久久精品免费视频| 欧美国产日韩二区| 欧美日韩亚洲视频一区| 久久久av电影| 7777精品久久久久久| 亚洲a成v人在线观看| 国产成人精品免高潮费视频| 不卡av日日日| 久久精品99久久久香蕉| 久久91精品国产91久久久| 最新国产精品拍自在线播放| 国产精品人成电影| 国产成人精品综合久久久| 91美女片黄在线观| 精品久久久久久中文字幕大豆网| 欧美性猛交99久久久久99按摩| 国产精品久久久一区| 亚洲精品日韩在线| 欧美专区在线播放| 国产精品7m视频| 亚洲香蕉在线观看| 国产欧美精品va在线观看| 91精品国产91久久久久久| 久久免费视频观看| 国产亚洲精品一区二555| 成人av资源在线播放| 国产精品久久精品| 九色精品免费永久在线| 欧美日韩亚洲国产一区| 欧美尺度大的性做爰视频| 一区二区欧美在线| 亚洲激情在线观看视频免费| 中文字幕亚洲欧美日韩2019| 亚洲va欧美va在线观看| 欧美天天综合色影久久精品| 中文字幕成人在线|