⑴ ios的應用沙箱運行是怎麼一回事
1、IOS沙盒機制
IOS應用程序只能在本應用程序中創建的文件系統中讀取文件,不可以去其它地方訪問,此區域被成為沙盒,所有的非代碼文件都要保存在此,例如圖像,圖標,聲音,映像,屬性列表,文本文件等。
1.1、每個應用程序都有自己的存儲空間
1.2、應用程序不能翻過自己的圍牆去訪問別的存儲空間的內容
1.3、應用程序請求的數據都要通過許可權檢測,假如不符合條件的話,不會被放行。
通過這張圖只能從表層上理解sandbox是一種安全體系,應用程序的所有操作都要通過這個體系來執行,其中核心內容是:sandbox對應用程序執行各種操作的許可權限制。
2、打開模擬器沙盒目錄
下面看看模擬器的沙盒文件夾在mac電腦上的什麼位置。
文件都在個人用戶名文件夾下的一個隱藏文件夾里,中文叫資源庫,英文名是Library。
下面介紹一種簡單方法前往該文件夾:在Finder上點->前往->前往文件夾
進入模擬器後,裡面就包含了各個應用程序的沙盒。
進入一個應用程序,如下圖,就是一個沙箱了。
下面介紹一下沙箱的目錄結構:
默認情況下,每個沙盒含有3個文件夾:Documents, Library 和 tmp和一個應用程序文件(也是一個文件)。因為應用的沙盒機制,應用只能在幾個目錄下讀寫文件
Documents:蘋果建議將程序中建立的或在程序中瀏覽到的文件數據保存在該目錄下,iTunes備份和恢復的時候會包括此目錄
Library:存儲程序的默認設置或其它狀態信息;
Library/Caches:存放緩存文件,iTunes不會備份此目錄,此目錄下文件不會在應用退出刪除
tmp:提供一個即時創建臨時文件的地方。
iTunes在與iphone同步時,備份所有的Documents和Library文件。
iPhone在重啟時,會丟棄所有的tmp文件。
注意:這里很容易和bundle混淆在一起,下面根據自己的一點理解說明二者的區別:
bundle :生成 iOS 應用程序時,Xcode 將它捆綁成一個包。捆綁包 (bundle) 是文件系統中的一個目錄,它將相關資源成組在一個地方。一個 iOS 應用程序捆綁包中,含有其可執行文件和支持資源文件(如應用程序圖標、圖像文件和已本地化的內容)。
A bundle(包裹、捆、束) is a directory with a standardizedhierarchical structure that holds executable code and the resources used by that code.
所以可以將整個應用程序其實就可以看做一個bundle。
沙箱的概念和bundle沒直接關系,沙箱只是說明程序資源與外界隔離
下面通過一個簡單的例子說明一下bundle和sandbox。
//新建的plist文件是在應用程序中的,可以通過bundle存取到該文件
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"MyPlist" ofType:@"plist"];
NSMutableArray *array = [NSMutableArray arrayWithContentsOfFile:plistPath];
//向數組中新添加一個項目
[array addObject:@"3"];
//重新寫回plist文件中
BOOL value = [array writeToFile:plistPath atomically:YES];
if (value) {
NSMutableArray *newArray = [NSMutableArray arrayWithContentsOfFile:plistPath];
NSLog(@"new array = %@",newArray);
}
/* 輸出:
new array = (
0,
1,
2,
3
)
*/
//獲取沙箱中document的path
NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *newPath = [documentsDirectory :@"data.plist"];
//將數組寫入到沙箱的document中的data.plist文件中
[array writeToFile:newPath atomically:YES];
NSMutableArray *arr = [[NSMutableArray alloc] initWithContentsOfFile:newPath];
NSLog(@"array in data.plist = %@",arr);
/* 輸出:
array in data.plist = (
0,
1,
2,
3
)
*/
說明:我們首先在項目中新建一個plist文件(root項的類型為數組),添加了3個元素。因為新建的plist文件是在應用程序中的,我們可以通過bundle獲取到這個plist文件,讀取出這個數組,添加一個數據元素後,重新寫回plist文件中。接著我們獲取沙箱document的path,然後將這個文件寫入到沙箱中的data.plist文件中(如果不存在,會自動新建一個的),然後再從data.plist讀取出這個數組。
關於新建的MyPlist.plist文件,我們寫迴文件的數組中添加了一項新的元素,但是我們在xcode中查看這個MyPlist.plist文件時,發現並沒有顯示出新增的數組元素,但是我們到沙箱中查看就可以看到了,這個估計是xoode本身的問題。
關於document中data.plist文件查看我們也可以到沙箱中進行查看。如下圖:
3、獲取沙盒目錄:
//1、獲取程序的Home目錄
NSString *homeDirectory = NSHomeDirectory();
NSLog(@"path:%@", homeDirectory);
//path:/Users/ios/Library/Application Support/iPhone Simulator/6.1/Applications/BF38C9E3-1A4A-4929-B5F2-3E46E41CC671
//2、獲取document目錄
NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSLog(@"path:%@", path);
//path:/Users/ios/Library/Application Support/iPhone Simulator/6.1/Applications/BF38C9E3-1A4A-4929-B5F2-3E46E41CC671/Documents
//3、獲取Cache目錄
NSArray *paths = (NSCachesDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSLog(@"path:%@", path);
//path:/Users/ios/Library/Application Support/iPhone Simulator/6.1/Applications/BF38C9E3-1A4A-4929-B5F2-3E46E41CC671/Library/Caches
//4、獲取Library目錄
NSArray *paths = (NSLibraryDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSLog(@"path:%@", path);
//path:/Users/ios/Library/Application Support/iPhone Simulator/6.1/Applications/BF38C9E3-1A4A-4929-B5F2-3E46E41CC671/Library
//5、獲取tmp目錄
NSString *tmpDir = NSTemporaryDirectory();
NSLog(@"path:%@", tmpDir);
//path:/Users/ios/Library/Application Support/iPhone Simulator/6.1/Applications/BF38C9E3-1A4A-4929-B5F2-3E46E41CC671/tmp/
4、文件操作之NSFileManager
4.1 、在document中創建一個文件目錄
NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog(@"documentsDirectory%@",documentsDirectory);
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *testDirectory = [documentsDirectory :@"test"];
// 創建目錄
[fileManager createDirectoryAtPath:testDirectory withIntermediateDirectories:YES attributes:nil error:nil];
4.2 、 在test目錄下創建文件
創建文件怎麼辦呢?接著上面的代碼 testPath 要用拼接上你要生成的文件名,比如test11.txt。這樣才能在test目錄下寫入文件。
testDirectory是上面代碼生成的路徑哦,不要忘了。我往test文件夾里寫入三個文件,test11.txt ,test22.txt,text.33.txt。內容都是寫入內容,write String。
實現代碼如下:
NSString *testPath1 = [testDirectory :@"test1.txt"];
NSString *testPath2 = [testDirectory :@"test2.txt"];
NSString *testPath3 = [testDirectory :@"test3.txt"];
NSString *string = @"寫入內容,write String";
[fileManager createFileAtPath:testPath1 contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
[fileManager createFileAtPath:testPath2 contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
[fileManager createFileAtPath:testPath3 contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
4.3獲取目錄列里所有文件名
兩種方法獲取:subpathsOfDirectoryAtPath 和 subpathsAtPath
NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog(@"documentsDirectory%@",documentsDirectory);
NSFileManager *fileManage = [NSFileManager defaultManager];
NSString *myDirectory = [documentsDirectory :@"test"];
//方法一
NSArray *file = [fileManage subpathsOfDirectoryAtPath: myDirectory error:nil];
NSLog(@"%@",file);
//方法二
NSArray *files = [fileManage subpathsAtPath: myDirectory ];
NSLog(@"%@",files);
獲取剛才test目錄下的所以文件名:
兩種方法都是輸出
(
"test1.txt",
"test2.txt",
"test3.txt"
)
4.4 、fileManager使用操作當前目錄
//創建文件管理器
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
//更改到待操作的目錄下
[fileManager changeCurrentDirectoryPath:[documentsDirectory stringByExpandingTildeInPath]];
//創建文件fileName文件名稱,contents文件的內容,如果開始沒有內容可以設置為nil,attributes文件的屬性,初始為nil
NSString * fileName = @"testFileNSFileManager.txt";
NSArray *array = [[NSArray alloc] initWithObjects:@"hello world",@"hello world1", @"hello world2",nil];
//下面是將數組類型轉換為NSData類型
NSMutableData *data = [[NSMutableData alloc] init];
for (int i = 0; i < [array count]; ++i ){
NSString *str = [array objectAtIndex:i];
NSData *temp = [str dataUsingEncoding:NSUTF8StringEncoding];
[data appendData:temp];
}
//注意contents參數的類型是NSData類型
[fileManager createFileAtPath:fileName contents:data attributes:nil];
4.5 刪除文件
接著上面的代碼就可以將剛新建的 testFileNSFileManager.txt文件刪除!
[fileManager removeItemAtPath:fileName error:nil];
4.6 混合數據的讀寫 請參看原文最後面的內容。
⑵ ios uiwebview 是非同步載入嗎
這是肯定的,你自己你可以測試下,
在webview代理中執行操作,看是否堵塞~
⑶ ios 如何讀取word內容
下載一個國產的軟體WPS Office,WPS Office是由金山軟體股份有限公司自主研發的一款辦公版軟體套裝,可以實現權辦公軟體最常用的文字、表格、演示等多種功能。具有內存佔用低、運行速度快、體積小巧、強大插件平台支持、免費提供海量在線存儲空間及文檔模板、支持閱讀和輸出PDF文件、全面兼容微軟Office97-2010格式(doc/docx/xls/xlsx/ppt/pptx等)獨特優勢。覆蓋Windows、Linux、Android、iOS等多個平台。 WPSOffice支持桌面和移動辦公。且WPS移動版通過Google Play平台,已覆蓋的50多個國家和地區,WPS forAndroid在應用排行榜上領先於微軟及其他競爭對手,居同類應用之首。可以兼容多種文檔形式。
可以用wps來打開所要讀取的word內容。
⑷ iphone4有什麼好軟體
1、電子書閱讀軟體熊貓看書;
2、出行必備軟體吃住行helpme360;
3、聊天工具QQ、MSN、飛信;
4、辦公實用工具Quickoffice;
5、來電顯示工具91來電秀 ;
6、實用輔助工具SBSettings
iPhone 4電子書閱讀軟體熊貓看書
在iPhone上常用到的電子書閱讀工具是熊貓看書,除支持txt、zip、html等常見的文檔,還支持jpg、bmp、png、gif等圖片的查看瀏覽。同時帶有的RSS訂閱、電子雜志、資訊等可以實時在線便捷的提供用戶較好的內容,不過需要耗費GPRS流量,用戶根據自己的情況使用即可。
熊貓看書支持手機本地的電子書閱讀,一般用戶都用到的是該功能。點擊本地書庫,打開或者搜索查找手機上放置的電子書文件即可方便的閱讀。支持的格式除了txt、zip、html外,還包括ndb、ndz、umd等時常見到的電子書類型。
大家直接在91上下載即可。
出行必備軟體吃住行helpme360
吃住行helpme360是iPhone用戶出行必不可少的一款軟體。商旅人士,免不了要經常外出,而吃住行helpme360就可以輕松解決大家外出遇到的各種問題。軟體可以查詢並預訂機票、酒店,查詢航班狀態、火車票,提供地圖定位、生活查詢、24小時互動問答等貼身便利的智能化的服務。
目前app上面是剛剛更新的1.6版,新版在原來的基礎上又增加了許多實用功能,可以通過軟體查詢火車票價和火車余票信息,如果用戶想知道自己附近有哪些酒店或餐館等信息,同樣可以通過軟體的地圖定位來獲取!網路支持WIFI,GPRS,EDGE和3G;系統要求iPhone OS 3.0或更高版本。相信經常外出的人士一定會非常喜歡這款免費軟體!
iTunes鏈接:http://itunes.apple.com/cn/app/id329490384?mt=8#
iPhone 4聊天工具QQ、MSN、飛信
在iPhone上經常用到的聊天工具,QQ、飛信和MSN一款都不能少。QQ作為國內最大用戶群體的客戶端,QQ iPhone版2010支持良好;飛信Fetion客戶端在21日剛發布更新了2.1.0版,支持Wi-Fi、CMNET、CMWAP等多種聯網方式登陸;MSN在國內白領中使用也較多,雖然iPhone版剛沒出多久,但依然值得推薦。
QQ2010 iPhone版最新為V2.1版,支持2.0及以上固件的iPhone和iPod Touch,在iPhone三大主流聊天工具中發布最早,給廣大iPhone用戶帶來了更多的便利。MSN剛發布,和近期發布更新的支持Wi-Fi版飛信一樣,給iPhone用戶交流溝通帶來了不少好處。
iTunes鏈接:http://itunes.apple.com/cn/app/msn-live-messenger-free/id382012735?mt=8
iPhone 4辦公實用工具QuickOffice
Quickoffice是手機移動辦公必不可少的工具,提供便捷的Word、Excel以及Text等格式支持。在iPhone手機使用中,是新手最必不可少裝機軟體之一。
辦公必備工具QuickOffice支持Doc類文檔文件、Sheet表格類文件以及Text文本類文件的創建,在外必須用到這類軟體打開郵件或者記錄相應內容十分有效便捷。
對於創建Doc文檔、Sheet表格和Text文本,新建書寫內容都很簡單,並且支持一些在PC上同樣的特殊效果,比如字體加粗、字體顏色以及字體的高亮顯示等更多的效果,大家在使用時根據需要進行調整。
iTunes鏈接:http://itunes.apple.com/cn/app/quickoffice-connect-mobile/id310723177?mt=8
再補充點,圖片正在整理ing!
iPhone 4來電顯示工具91來電秀
在目前的iOS系統里,支持來電歸屬地顯示的軟體包括91來電秀、實時來電歸屬地查詢MCaller等,並且其它的防火q1an9類軟體,諸如熊貓防火q1an9、信安易衛士等也自帶來電歸屬顯示功能。
91來電秀支持來電大頭貼的個性顯示,通話管理、簡訊管理,以及進行聯系人分組的設置,另外最核心最重要的功能就是歸屬地和流量控制功能。
在用戶選擇使用流量控制功能後,針對自己的資費套餐進行設置,在用戶每月流量達到設定的范圍後,軟體會自動開啟「禁用GPRS」功能,該項功能比較實用。
除此之外,不少用戶也反饋在使用91來電秀中遇到不少問題,比如資料庫更新較慢,還有就是一些用戶遇到的導致白蘋果問題,這是以前某一個版本的問題,官方已經進行了修正。如果在這方面還心存芥蒂的話,筆者就推薦大家使用熊貓防火q1an9或者信安易衛士、實時來電歸屬地查詢MCaller等都是不錯的選擇。
iPhone 4實用輔助工具SBSettings
SBSettings(在cydia上搜索下載)是一款多功能的系統管理軟體 ,是BossPrefs的升級換代產品,安裝完畢後,桌面不會有圖標,使用的時候,用手指直接在頂部狀態欄一劃就出現窗口界面。
1、你可以自定義包括Edge、Wifi、Bluetooth、SSH和Samba的開關設置;
2、快速重啟、關機、軟重啟、安全模式;
3、亮度調節;
4、內置3個主題;
5、Dock功能;
6、隱藏程序圖標功能;
在界面頂部手機信號處從左向右滑動出現sbsettings界面,上面是工具欄部分,下面是本機信息,包括Wi-Fi地址,可用內存等。
SBSettings的安裝,可以通過91手機助手,將下載到電腦上進行安裝;也可以通過Cydia上的源里查找並進行安裝。
SBSettings在iPhone上比較實用,但是開機啟動後,不少iPhone一代、iPhone 3G和iPhone 3GS的用戶反映會造成iPhone變慢的情況,但在iPhone 4上肯定不會存在這樣的問題,推薦用戶們安裝使用。