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

基于iPhone的地址簿應(yīng)用程序開發(fā)探索

2011-12-31 00:00:00吳君曉羊紅燕吳金艷何廣軍
科技創(chuàng)新導(dǎo)報 2011年29期

吳君曉,女,寧波大紅鷹學(xué)院 2008級計算機科學(xué)與技術(shù)專業(yè)學(xué)生

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

摘要:以地址簿應(yīng)用程序為原型,對基于iPhone的應(yīng)用程序開發(fā)進行了有益的探索, 解析了iPhone開發(fā)中的多視圖開發(fā)以及數(shù)據(jù)持久存儲等基本問題,探討了基于iPhone應(yīng)用程序開發(fā)的基本流程,對基于移動平臺的應(yīng)用程序?qū)崿F(xiàn)有一定的借鑒作用。

關(guān)鍵詞:iPhone 地址簿 應(yīng)用程序開發(fā)

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

1 引言

第三代移動通信技術(shù)(3rd-generation,3G)的高速數(shù)據(jù)下載能力,以及終端應(yīng)用程序的需求,促使了手機應(yīng)用程序開發(fā)的快速發(fā)展。具有特定功能的應(yīng)用程序?qū)τ谟脩魜碚f更有用,更方便。用戶只需打開終端的相應(yīng)應(yīng)用程序自動捕獲信息,而不用打開瀏覽器來主動搜索獲得信息?;趇Phone的手機應(yīng)用程序也與日俱增,憑借iPhone 完美的用戶體驗性能,使得iPhone手機應(yīng)用程序有極其廣闊的使用群體。

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

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

2 iPhone開發(fā)平臺簡介

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

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

3 系統(tǒng)的設(shè)計與實現(xiàn)

3.1 功能模塊

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

3.2 總體設(shè)計

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

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

3.3 UI設(shè)計

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

地址薄應(yīng)用程序主要的界面設(shè)計工作都是通過代碼來實現(xiàn)的:

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

UIBarButtonItem *plusButton=[[UIButtonItem alloc]

initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self

action:@selector(addContact)];

self.navigationItem.rightBarButtonItem=plusButton;

地址簿應(yīng)用程序?qū)Ш綑谥羞€包含了返回、修改等Items,其放置位置只能是導(dǎo)航欄的左側(cè)或右側(cè)。

(2) 在每個聯(lián)系人窗格右側(cè)添加一個顯示聯(lián)系人按鈕實現(xiàn)導(dǎo)航到詳細信息視圖。

cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator;

(3) 復(fù)用UITableViewCells節(jié)約內(nèi)存。當(dāng)翻閱一長串的聯(lián)系人時,在任何時候只有有限數(shù)量的聯(lián)系人可以出現(xiàn)在屏幕上。我們可以通過調(diào)用UITableView的dequeueReusableCellWithIdentifier:方法來重用那些不可見的UITableViewCells,而不是為要顯示的聯(lián)系人創(chuàng)建新的窗格。這樣可以節(jié)省內(nèi)存并提高應(yīng)用程序的性能。

3.4 數(shù)據(jù)持久性存儲

(1) 屬性列表訪問

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

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

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

(2) 獲取存儲文件

屬性列表持久存儲機制使用iPhone的文件系統(tǒng)實現(xiàn),持久性存儲文件都存儲在應(yīng)用程序的/Doucement文件夾。每個程序都有自己的/Doucement文件夾,并且應(yīng)用程序僅能讀取各自的/Doucement文件夾目錄中的內(nèi)容。應(yīng)用程序?qū)?shù)據(jù)存儲在/Doucement中。不管使用什么機制實現(xiàn)持久數(shù)據(jù)存儲,只要是采用文件系統(tǒng)實現(xiàn),都要獲取存儲文件路徑。

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

獲取文件夾路徑:

NSArray *paths = NSSearchPathForDirectoriesInDomains(

NSDocumentDirectory, NSUserDomainMask, YES);

NSString *directory = [paths objectAtIndex:0];

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

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) 數(shù)據(jù)訪問

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

讀取:

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

寫入:

[contacts addObject:person];

[contacts writeToFile:filePath atomically:NO];

4 存在的問題及解決方案

4.1 存在的問題

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

4.2 解決方案

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

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

Core Data是一種在關(guān)系數(shù)據(jù)庫和面向?qū)ο蟮木幊陶Z言中間實現(xiàn)對象關(guān)系映射(ORM)的解決工具。Core Data是一款穩(wěn)定、功能全面的持久性工具,本質(zhì)上是采用嵌入式關(guān)系庫SQLite3作為存儲文件。

在新建應(yīng)用程序時,需選中”Use Core Data for Storage”的復(fù)選框,則在項目 Resource文件中產(chǎn)生了一個新的文件:Core_Data_Persistence.xcdatamodel數(shù)據(jù)模型編輯器。數(shù)據(jù)模型編輯器負責(zé)管理所有文件的系統(tǒng)管理工作。

5 結(jié)語

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

參考文獻

[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 平臺的電子連環(huán)畫交互系統(tǒng)設(shè)計與實現(xiàn)[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热这里只有成人精品国产| 91久久精品日日躁夜夜躁欧美| 性色在线视频精品| 亚洲一级毛片免费观看| 国产成人精品一区二区三区| 国产精品理论片| 日本黄色不卡视频| 一级成人欧美一区在线观看 | 99久久精品久久久久久婷婷| 国产三级精品三级在线观看| 狠狠色狠狠综合久久| 亚洲成人播放| 亚洲丝袜第一页| 最新加勒比隔壁人妻| 日韩av资源在线| 日韩精品欧美国产在线| 99国产在线视频| 国产欧美视频一区二区三区| 国产xxxxx免费视频| 一本大道香蕉久中文在线播放| 狠狠干欧美| 99在线视频免费| 成人综合网址| 狠狠色丁香婷婷| 国产超薄肉色丝袜网站| 亚洲毛片一级带毛片基地| 伊人激情久久综合中文字幕| 久久亚洲中文字幕精品一区| 色首页AV在线| 久久久久亚洲AV成人人电影软件| 国产欧美在线观看一区| 欧美国产精品不卡在线观看| 伊人久久大线影院首页| 9cao视频精品| 美女潮喷出白浆在线观看视频| 丁香五月激情图片| 色综合中文| 婷婷五月在线视频| 亚洲成a人片77777在线播放| 国产爽歪歪免费视频在线观看| 国产亚洲精品97AA片在线播放| 在线播放国产99re| 在线一级毛片| 2020国产免费久久精品99| 国产精品白浆在线播放| 中文无码精品A∨在线观看不卡| 91欧美亚洲国产五月天| 国产91小视频在线观看| 久草国产在线观看| 国产成人精品2021欧美日韩| 999精品色在线观看| 广东一级毛片| 亚洲美女高潮久久久久久久| 欧日韩在线不卡视频| 伊人AV天堂| 日韩第一页在线| 亚洲Av综合日韩精品久久久| 伊人久久影视| 亚洲AV无码久久天堂| 日韩A级毛片一区二区三区| 一级成人a毛片免费播放| 亚洲激情区| 日韩精品成人网页视频在线| 日本一区二区三区精品国产| 亚洲精品免费网站| 日本高清免费一本在线观看| 国产呦精品一区二区三区下载| 欧美A级V片在线观看| 婷婷丁香色| 日本午夜三级| 国禁国产you女视频网站| 国产制服丝袜91在线| 很黄的网站在线观看| 国产成人无码AV在线播放动漫 | 欧美特黄一级大黄录像| 狼友视频一区二区三区|