999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于iPhone的地址簿應用程序開發探索

2011-12-31 00:00:00吳君曉羊紅燕吳金艷何廣軍
科技創新導報 2011年29期

吳君曉,女,寧波大紅鷹學院 2008級計算機科學與技術專業學生

項目基金:浙江省2010年度大學生科技創新活動項目(新苗計劃),項目編號:2010R423002

摘要:以地址簿應用程序為原型,對基于iPhone的應用程序開發進行了有益的探索, 解析了iPhone開發中的多視圖開發以及數據持久存儲等基本問題,探討了基于iPhone應用程序開發的基本流程,對基于移動平臺的應用程序實現有一定的借鑒作用。

關鍵詞:iPhone 地址簿 應用程序開發

中圖分類號: TP311 文獻標識碼:A 文章編號:1674-098X(2011)10(b)-0000-00

1 引言

第三代移動通信技術(3rd-generation,3G)的高速數據下載能力,以及終端應用程序的需求,促使了手機應用程序開發的快速發展。具有特定功能的應用程序對于用戶來說更有用,更方便。用戶只需打開終端的相應應用程序自動捕獲信息,而不用打開瀏覽器來主動搜索獲得信息。基于iPhone的手機應用程序也與日俱增,憑借iPhone 完美的用戶體驗性能,使得iPhone手機應用程序有極其廣闊的使用群體。

為探索iPhone平臺下應用程序開發的機制,作者按照浙江省2010年度大學生新苗計劃項目的要求,以地址簿應用程序為原型,對基于iPhone的應用程序開發進行的有益的探索。

地址簿應用程序以提供快捷方便的方式來存儲聯系人信息。地址簿信息是所有應用共享的非常重要的資源,使電話通訊、收發郵件、短信這樣的基本交互變得簡單,并允許其他的應用程序訪問該表獲取相關信息。本文對iPhone開發過程中的多視圖開發、數據持久存儲等基本問題進行了解析,并探討了基于iPhone應用程序開發的基本流程。

2 iPhone開發平臺簡介

iPhone基于SDK開發,采用Objective-C語言和Xcode開發環境,開發的應用程序運行在iPhone模擬器上。iPhone模擬器基本支持模擬真機上的所有功能,包括旋轉、搖晃等物理功能。

Objective-C是擴充C的面向對象編程語言,可以在支持gcc運作的系統上編寫代碼和編譯,同時又可以與c/c++混合編程。iPhone開發采用Cocoa快速開發框架。Cocoa框架最大程度的幫助開發人員開發出功能強大的軟件。Cocoa Frameworks包含以下兩個子框架:Foundation 和UIKit。

3 系統的設計與實現

3.1 功能模塊

地址簿應用程序包括了查詢聯系人詳細信息、添加新聯系人、刪除聯系人等基本功能模塊。在主界面上,按字母順序排列聯系人列表,用戶可以滾動查看聯系人。觸摸聯系人的名字將顯示這個聯系人的詳細信息。觸摸應用程序右上角的添加聯系人按鈕添加一個新的聯系人。觸摸左上角的修改聯系人按鈕可以實現選擇刪除聯系人。

3.2 總體設計

地址薄應用程序使用表視圖(UITableView)并復用UITableViewCells顯示聯系人列表,使用導航控制器實現添加、查看、修改視圖和主視圖間的切換。導航控制器通過一個視圖控制器棧來維護視圖的導航,當需要顯示某視圖,則壓棧該視圖的控制器,當前的視圖控制器出棧,則下一個視圖成為當前視圖。

iPhone視圖的規則是:一個窗口(UIWindow),多個視圖(UIView)。即只允許一個應用程序只有一個窗口。每個視圖通常都擁有一個視圖控制器。視圖控制器(UIViewController)管理著UIViews相應的表視圖控制器(UITableViewController)管理著UITableView。視圖控制器不是視圖,它們是沒有可視化表示的抽象類。視圖控制器集中進行視圖管理,包括管理頁面的生命周期,設置視圖的外觀和它顯示的子視圖,響應正在顯示或消失的視圖。

3.3 UI設計

地址薄應用程序創建一個基于Navigation—Based Application模板的多視圖項目。用戶主要通過IB(Interface Builder)程序來創建和編輯nib文件來設計界面。iPhone 操作系統提供了非常出色的UI庫以供用戶進行可視化設計,但不會產生任何維護的代碼。也可以通過代碼來實現界面的設計工作,或者繼承已有的視圖或控件。

地址薄應用程序主要的界面設計工作都是通過代碼來實現的:

(1) 為導航欄添加按鈕以便通過一個導航欄在多層視圖之間切換。所有的UIViewControllers都擁有一個UINavigationController類型的NavigationController的屬性。UINavigationItems包含用來在應用程序屏幕間導航的按鈕。在導航欄上添加一個添加按鈕來實現導航只添加新聯系人視圖:

UIBarButtonItem *plusButton=[[UIButtonItem alloc]

initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self

action:@selector(addContact)];

self.navigationItem.rightBarButtonItem=plusButton;

地址簿應用程序導航欄中還包含了返回、修改等Items,其放置位置只能是導航欄的左側或右側。

(2) 在每個聯系人窗格右側添加一個顯示聯系人按鈕實現導航到詳細信息視圖。

cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator;

(3) 復用UITableViewCells節約內存。當翻閱一長串的聯系人時,在任何時候只有有限數量的聯系人可以出現在屏幕上。我們可以通過調用UITableView的dequeueReusableCellWithIdentifier:方法來重用那些不可見的UITableViewCells,而不是為要顯示的聯系人創建新的窗格。這樣可以節省內存并提高應用程序的性能。

3.4 數據持久性存儲

(1) 屬性列表訪問

持久性存儲就是某種形式存儲的非易失性存儲,這種存儲在設備應用程序重啟時不會丟失數據。在許多的應用程序中,需要持久存儲數據,在用戶進行更改時能夠保存這些修改到某種形式。

地址簿應用程序采用屬性列表訪問機制。屬性列表機制只要序列化特定的數據模型對象,就可以將字典(NSDictionary)和數組(NSArray)實例寫入屬性列表以及從屬性列表創建它們。

屬性列表機制都將考慮將數據存儲在一個文件中,還是存儲在多個文件中。使用單個文件存儲形式時,必須將全部的應用程序數據加載到內存中,并且將所有數據全部寫入文件系統,即使更改再少也是如此。而多個文件存儲形式允許應用程序僅加載用戶請求的數據,但大大增加了應用程序的復雜性。它當用戶進行更改時,只需保存更改的文件。此方法允許開發人員在收到內存不足通知時釋放內存。一般情況下,會選擇單個文件存儲,因為已足夠滿足于一般的程序。

(2) 獲取存儲文件

屬性列表持久存儲機制使用iPhone的文件系統實現,持久性存儲文件都存儲在應用程序的/Doucement文件夾。每個程序都有自己的/Doucement文件夾,并且應用程序僅能讀取各自的/Doucement文件夾目錄中的內容。應用程序將數據存儲在/Doucement中。不管使用什么機制實現持久數據存儲,只要是采用文件系統實現,都要獲取存儲文件路徑。

獲取/Doucement目錄:檢索/Doucement目錄的完整路徑以便讀取和寫入文件。使用C函數的NSSearchPathForDirectoriesInDomain來查找各種目錄,它是Foundation函數,因此可以在Cocoa框架中應用。

獲取文件夾路徑:

NSArray *paths = NSSearchPathForDirectoriesInDomains(

NSDocumentDirectory, NSUserDomainMask, YES);

NSString *directory = [paths objectAtIndex:0];

獲取存儲文件路徑:使用stringByAppendingPathComponent方法追加存儲文件名,以獲得存儲的完整路徑。通常還會添加NSFileManager對象檢測數據存儲文件是否存在,如果存在則初始化,若不存在則新建。

filePath = [[NSString alloc] initWithString:

[directory stringByAppendingPathComponent:@\"contacts\"]];

NSFileManager *fileManager = [NSFileManager defaultManager];

if ([fileManager fileExistsAtPath:filePath])

contacts = [[NSMutableArray alloc] initWithContentsOfFile:filePath];

else // else initialize contacts as empty NSMutableArray

contacts = [[NSMutableArray alloc] init];

(3) 數據訪問

許多應用程序都使用了屬性列表,盡管可以讓任何對象序列化,但只能將這些對象放置到某個集合類(主要NSDictionary和NSArray)中,然后使用該集合類的writeToFile:atomically:方法將它們存儲到屬性列表。地址簿應用程序使用單個文件實現持久性存儲,首先創建一個根對象,通常是NSArray或NSDictionary。接下來,使用所有需要保存的程序數據填充根對象。需要保存時,代碼會將該根對象的全部內容重新寫入單個文件。應用程序在啟動時會將該文件的全部內容讀入內存,并在退出時注銷全部內容。程序中使用鍵/值編碼對對象和本地數據類型進行讀取和寫入。當應用程序管理的數據只有幾兆字節時,將會非常簡單。

讀取:

NSString *name = [[contacts objectAtIndex:indexPath.row] valueForKey:@\"Name\"];

寫入:

[contacts addObject:person];

[contacts writeToFile:filePath atomically:NO];

4 存在的問題及解決方案

4.1 存在的問題

在本項目中對數據的存儲采用列表存儲方式,雖然減小了程序,但是不能滿足大量的數據存儲和數據檢索等問題。但是對于數據的存儲和檢索數據存在一定的缺陷。Core Data以其數據模型編輯器幫助完成所有文件的系統管理工作。

4.2 解決方案

持久存儲數據可以使用多種不同的機制數進行數據持久存儲在iPhone上設備上,主要采用以下四種機制:屬性列表機制,對象歸檔機制,iPhone的嵌入式數據庫(SQLite3機制,以及蘋果公司提供的持久性工具Core Data機制。

經比對研究,確定在地址簿應用程序的基礎上,采用Core Data作為持久存儲機制實現記事本的添加、修改、刪除、查看等基本數據訪問功能模塊。Core Data使用其數據模型編輯器幫助程序完成所有存儲文件的系統管理工作。

Core Data是一種在關系數據庫和面向對象的編程語言中間實現對象關系映射(ORM)的解決工具。Core Data是一款穩定、功能全面的持久性工具,本質上是采用嵌入式關系庫SQLite3作為存儲文件。

在新建應用程序時,需選中”Use Core Data for Storage”的復選框,則在項目 Resource文件中產生了一個新的文件:Core_Data_Persistence.xcdatamodel數據模型編輯器。數據模型編輯器負責管理所有文件的系統管理工作。

5 結語

本文通過地址簿應用程序的開發,探索研究基于iPhone開發應用程序的完整流程,形成了Apple OS平臺下iPhone應用程序開發流程文檔。通過探索和實踐,不僅可以為今后需要在iPhone等移動開發平臺上開發應用程序提供幫助,也為基于iPhone應用程序二次開發建立基礎。在理解和開發地址簿應用程序的前提下,基于iPhone的應用程序開發得到實踐和驗證。

參考文獻

[1] A.Hamou, S.Guy,B.Lewden, A.Bilyea, F. Gwadry-Sridhar, M. Bauer.Data collection with iPhone Web apps efficiently collecting patient data using mobile devices[A]. 2010 IEEE International Conference[C].235-239.

[2] Apple Inc.Core Data Programming Guide[EB/OL]. http://developer.apple.com/ library/ios/#documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html.2010-11-15.

[3] 徐俊.基于iPhone 平臺的電子連環畫交互系統設計與實現[J].包裝工程. 2011(04). 45-48.

[4] Low D, Pittaway A. The 'iPhone' induction - a novel use for the Apple iPhone. Pediatric Anesthesia 2010;18:573-4.

主站蜘蛛池模板: 亚洲婷婷丁香| 久久99国产综合精品女同| 国产一区二区免费播放| 亚洲中文字幕无码爆乳| 精品国产成人a在线观看| 91久久偷偷做嫩草影院| 四虎影视无码永久免费观看| 思思99思思久久最新精品| 免费国产黄线在线观看| 色久综合在线| 国产精品大白天新婚身材| 久久综合亚洲色一区二区三区| 国产黄色视频综合| 国产AV毛片| 尤物成AV人片在线观看| 亚洲区欧美区| 国产高颜值露脸在线观看| 国产小视频免费| 国产一区二区三区夜色| 亚洲第一成年网| 国产成a人片在线播放| 亚洲午夜综合网| 色综合综合网| 成人av手机在线观看| 国产成人久视频免费| 成人在线观看一区| 国内精品视频在线| 91免费国产高清观看| 久久77777| 最近最新中文字幕免费的一页| 波多野结衣亚洲一区| 2020国产在线视精品在| a色毛片免费视频| 这里只有精品免费视频| 好吊色国产欧美日韩免费观看| 中文字幕首页系列人妻| 91综合色区亚洲熟妇p| 欧美在线国产| 国产成人无码Av在线播放无广告| 国产区免费精品视频| 88国产经典欧美一区二区三区| 亚洲国产成人自拍| 中文字幕1区2区| 五月激情婷婷综合| 国产精品女主播| 国产精品人成在线播放| 亚洲色图欧美| 在线播放国产一区| 国产精品太粉嫩高中在线观看| 欧美色视频日本| 久久网欧美| 日韩欧美国产中文| 999精品视频在线| 国产亚洲高清视频| 久久精品无码一区二区日韩免费| 精品一區二區久久久久久久網站| 国产精品无码久久久久久| 国产人妖视频一区在线观看| 色综合激情网| 又爽又大又光又色的午夜视频| 欧美成人看片一区二区三区| 亚洲成人动漫在线观看| 免费xxxxx在线观看网站| 亚洲国产天堂久久综合| 亚洲AV无码久久天堂| 日本欧美中文字幕精品亚洲| 国产精品第| 日韩在线网址| 国产激爽大片在线播放| 亚洲Va中文字幕久久一区| 亚洲欧洲日本在线| 午夜国产理论| 性激烈欧美三级在线播放| 国产一级毛片网站| 青青青视频91在线 | 成人精品亚洲| 欧美色视频在线| 国产二级毛片| 女人18毛片水真多国产| 无码免费的亚洲视频| 精品国产免费观看一区| 91久久夜色精品国产网站|