我使用的是AFNetworking和SDURLCache我所有的网络操作.
我这样SDURLCache设置:
SDURLCache *urlCache = [[SDURLCache alloc]
initWithMemoryCapacity:1024*1024*2 // 2MB mem cache
diskCapacity:1024*1024*15 // 15MB disk cache
diskPath:[SDURLCache defaultCachePath]];
[urlCache setMinCacheInterval:1];
[NSURLCache setSharedURLCache:urlCache];
Run Code Online (Sandbox Code Playgroud)
我的所有请求都使用cachePolicy NSURLRequestUseProtocolCachePolicy,根据apple docs的工作原理如下:
如果请求不存在NSCachedURLResponse,则从原始源获取数据.如果请求的缓存响应,则URL加载系统会检查响应以确定它是否指定必须重新验证内容.如果必须重新验证内容,则会与原始源建立连接以查看其是否已更改.如果它没有更改,则从本地缓存返回响应.如果已更改,则从原始源获取数据.
如果缓存的响应未指定必须重新验证内容,则检查响应中指定的最大期限或到期时间.如果缓存的响应足够新,则从本地缓存返回响应.如果确定响应是陈旧的,则检查原始源是否有更新的数据.如果有更新的数据,则从原始源获取数据,否则从缓存返回.
因此,只要缓存不是陈旧的,即使在飞行模式下一切都能正常工作.当缓存过期(max-age和其他)时,将调用失败块.
我一直在挖掘内部SDURLCache,这个方法返回一个有效数据的响应(我已经将数据解析为一个字符串,它包含缓存的信息)
- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request {
request = [SDURLCache canonicalRequestForRequest:request];
NSCachedURLResponse *memoryResponse =
[super cachedResponseForRequest:request];
if (memoryResponse) {
return memoryResponse;
}
NSString *cacheKey = [SDURLCache cacheKeyForURL:request.URL];
// NOTE: We don't handle expiration here as even staled cache data is
// necessary for …Run Code Online (Sandbox Code Playgroud) 目前我在浏览器中获取所选文本:
window.getSelection();
Run Code Online (Sandbox Code Playgroud)
现在我需要在按下自定义键时显示该文本上方的工具提示(注意鼠标不能再在文本上方),所以为了做到这一点,我需要所选文本的绝对位置.
有没有办法做到这一点,可能将文本包装在标签内,然后获得偏移量?它只需要在Chrome中运行,而不是所有浏览器.
所以我有一个支持iOS 4的项目,所以我的所有IBOutlet __unsafe_unretained甚至都是在笔尖中的IBOutlet,但在控制器主视图之外(同一笔尖中的独立视图)并且都很有效.
所以时机已到,现在客户只想支持iOS 5,所以我们的团队改变了所有的__unsafe_unretained IBOutlets,__weak IBOutlets但现在不在主视图中的IBOutlets被设置为nil(除了viewdidload),所以我们以后无法添加它们.
如果我考虑一下,这是有道理的,因为如果没有视图(主视图)保留那些IBOutlets它们应该被解除分配并归零(我不知道这是否是正确的单词),所以解决方案是__weak从那些中删除IBOutlets
但是,没有任何意义,我就是为什么不同的行为之间unsafe_unretained和weak,在我的脑海中unsafe_unretained那些应该被释放,当应用程序试图访问他们,他们应该指向一个无效的引用,然后应用程序应该崩溃.
我认为不安全的不安全与弱者相同但没有归零.
我在这里错过了什么吗?
谢谢.
我一直用xib文件开发所有东西,因为我们需要支持iOS4.
现在我们终于只支持iOS5和iOS6,所以我决定尝试一下故事板,所以一切都很简单,但我发现自己做了很多这样的代码:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"AddPlayer"]) { //Ugly
UINavigationController * navigationController = segue.destinationViewController;
PlayerDetailViewController * playerDetailsViewController = [navigationController viewControllers][0]; //Super Ugly
playerDetailsViewController.delegate = self;
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道你们,但我发现这段代码非常丑陋且容易出错.
有没有更好的方式来使用Storyboard?我应该回到xib文件吗?
我正在编写一个iPad应用程序,当这一天变为星期日时我必须更改图形.
我直截了当的解决方案是检查- (void)applicationDidBecomeActive:(UIApplication *)application或-(void)viewWillAppear:(BOOL)animated方法中的日期,并设置一个计时器,如每10分钟,以检查应用程序处于活动状态时是否已将日期更改为星期日.
有没有另一种,也许更有效的方法来处理这个问题?
我知道这已被问过100万次,但我无法想出来.
因此,如果他们将应用程序发送到de background超过10分钟,我需要构建一个计步器应用程序并继续计算步骤事件.
客户端根本不想使用GPS,也不会播放静音,因为Apple可能会拒绝它.
有没有人有想法如何做到这一点?
客户端正在使用Runtastic计步器应用程序作为参考,我一直在分析它,它不使用也不使用位置,音乐和在后台运行超过10分钟.
任何线索?这样做真的不可能吗?有可能Runtastic的人同意苹果使用一些秘密API让它在后台运行吗?
我是java网络世界的新手,所以如果我说一些愚蠢的话,请原谅我.
我正在使用struts 2,我需要在关闭jsp时删除一个文件(位于服务器上).
有没有人知道怎么做?
提前致谢.
我正在做一个简单的iphone应用程序,但是客户端发给我一个1.6mb的JSON文件,客户端不希望在后端再做任何事情,所以我需要一种有效的方法来处理这些数据,数据将会发送到稍后用于在应用程序内过滤和搜索.
你最重要的是解决这个问题.
提前致谢
更新
内存中的这个JSON大约是4.85mb,你们认为这对于一个人来说太多了NSDictionary.
ios ×5
iphone ×4
objective-c ×4
afnetworking ×1
background ×1
caching ×1
date ×1
html ×1
ios4 ×1
ios5 ×1
ipad ×1
java ×1
javascript ×1
json ×1
jsp ×1
position ×1
segue ×1
selection ×1
storyboard ×1
text ×1
timer ×1