iOS 5的文件存储策略应对

苹果在iOS 5系统时,对app的文件存储提出了新的要求。从它的guildline来看,是推荐开发者尽量把app生成的文件放在Caches目录下的。原文如下: Only user-generated data or that cannot otherwise be recreated by your application, should be stored in the /Documents directory and rest should be stored to /Library/Caches directory。 照做会怎么样? 如果这么做的话,会出现两种情况 如果对此置之不理,继续把应用生成的文件放在Documents目录下,那么这些文件会被备份到iTunes或者iCloud。如果这些文件很大,那么用户可能需要为了同步消耗不少流量,然后苹果可能会因此拒绝你的应用上架,这是一个悲剧。 如果开发者照Apple说的干,把应用生成的文件放在Caches目录下,那么苹果不会拒绝你的应用,很happy。但是iOS 5会在磁盘空间紧张的时候删除Caches目录下的文件,这对用户来说可能是一个更大的悲剧。 如何应对新的文件存储策略? 开发者在这时陷入了两难的境地,但是到了iOS 5.0.1的时候,开发者多了第三种选择: 继续把文件存储在Documents目录下,但是标记这些文件为不需要备份。详情请参考 technote (QA1719) 原文如下: Q: My app has a number of files that need to be stored on […]

实战three20的TTTableViewController自定义单元格

three20中的TTTableCaptionItem实际使用效果是,左侧是较小字体的标题,右侧是大号字体的文本,如下图所示 但是在实际使用中,我希望左侧的字体能变大,右侧字体变小,所以我参照wiki的介绍 在TTTableViewController定制单元格 来进行调整,按文中介绍,我需要实现: 自定义的tableItem 自定义的tableItemCell 自定义的datasource,以便支持新增的tableItem 但是考虑到three20的代码库中已经有个半成品的TTTableRightCaptionItem,所以我只需要在这个基础上加工一下。 实现TTTableTextCaptionItem 我将这个自定义的类命名为TTTableTextCaptionItem以示区别 TTTableTextCaptionItem TTTableTextCaptionItem.h #import @interface TTTableTextCaptionItem : TTTableRightCaptionItem { } @end TTTableTextCaptionItem.m #import “TTTableTextCaptionItem.h” @implementation TTTableTextCaptionItem @end TTTableTextCaptionItemCell TTTableTextCaptionItemCell.h #import @interface TTTableTextCaptionItemCell : TTTableRightCaptionItemCell { } @end TTTableTextCaptionItemCell.m #import “TTTableTextCaptionItem.h” #import “TTTableTextCaptionItemCell.h” static const CGFloat kKeySpacing = 12; static const CGFloat kKeyWidth = 75; @implementation TTTableTextCaptionItemCell […]

如何将TTURLRequest和OAuthConsumer搭配使用

TTURLRequest是three20开发框架提供的一个url请求类,它是NSURLRequest类的扩展,有如下优点: post数据方便,只需要构建一个参数的dictionary就可以了,像get方法一样简单 支持磁盘缓存,而NSURLRequest仅支持内存缓存 因为TTTableViewController + TTURLRequestModel的存在,搭配使用效果良好 在ios的开发中我有时也用到了OAuthConsumer进行oauth授权,利用OAuthConsumer的fetcher类请求远程数据,所以我想TTURLRequest和OAuthConsumer能不能搭配使用,这样就能用上three20相关便利方法加载远程数据。于是做了点简单的测试,果然成功了:)大体思路是: 先利用OAuthConsumer根据提交的参数计算出oauth的Authorization认证头 把Authorization头加到TTURLRequest 由TTURLRequest提交数据。 直接上代码说话: 计算Authorization头 利用OAuthConsumer计算出Authorization头,为之后的请求做准备 //start OAConsumer * consumer = [[OAConsumer alloc] initWithKey:yourConsumerKey secret:yourSecret]; NSURL * url = [NSURL URLWithString:@”http://your-api-host/your-method”]; OAToken * authToken = [[OAToken alloc] initWithKey:yourAuthToken secret:yourAuthSecrent]; OAMutableURLRequest * request = [[OAMutableURLRequest alloc] initWithURL:url consumer:consumer token:authToken realm:nil signatureProvider:[[[OAPlaintextSignatureProvider alloc] init] autorelease]]; [request setHTTPMethod:@”POST”]; NSMutableArray * params […]

一个关于three20开发框架的wiki

我最近花了不少时间做iphone上的app,由于是刚刚接触objective-c,需要从头学习的东西比较多。我从使用facebook开源的three20开发框架来学习ios应用开发,这种方式不能说是最好的学习方式,但是我也从中获得了不少乐趣。 关于three20的中文资料不是太多,所以我搜集整理翻译了一些内容,放到了wiki上: 本人才疏学浅,翻译的内容难免出错或者词不达意,欢迎批评指正。