⑴ 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上肯定不会存在这样的问题,推荐用户们安装使用。