小编Eca*_*ion的帖子

具有AFNetworking和离线模式的SDURLCache无法正常工作

我使用的是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)

iphone caching objective-c ios afnetworking

37
推荐指数
1
解决办法
6855
查看次数

获取所选文本位置

目前我在浏览器中获取所选文本:

window.getSelection();
Run Code Online (Sandbox Code Playgroud)

现在我需要在按下自定义键时显示该文本上方的工具提示(注意鼠标不能再在文本上方),所以为了做到这一点,我需要所选文本的绝对位置.

有没有办法做到这一点,可能将文本包装在标签内,然后获得偏移量?它只需要在Chrome中运行,而不是所有浏览器.

html javascript text position selection

36
推荐指数
2
解决办法
3万
查看次数

弱与不安全之间的差异

所以我有一个支持iOS 4的项目,所以我的所有IBOutlet __unsafe_unretained甚至都是在笔尖中的IBOutlet,但在控制器主视图之外(同一笔尖中的独立视图)并且都很有效.

所以时机已到,现在客户只想支持iOS 5,所以我们的团队改变了所有的__unsafe_unretained IBOutlets,__weak IBOutlets但现在不在主视图中的IBOutlets被设置为nil(除了viewdidload),所以我们以后无法添加它们.

如果我考虑一下,这是有道理的,因为如果没有视图(主视图)保留那些IBOutlets它们应该被解除分配并归零(我不知道这是否是正确的单词),所以解决方案是__weak从那些中删除IBOutlets

但是,没有任何意义,我就是为什么不同的行为之间unsafe_unretained和weak,在我的脑海中unsafe_unretained那些应该被释放,当应用程序试图访问他们,他们应该指向一个无效的引用,然后应用程序应该崩溃.

我认为不安全的不安全与弱者相同但没有归零.

我在这里错过了什么吗?

谢谢.

memory-management objective-c ios4 ios5

9
推荐指数
1
解决办法
6571
查看次数

故事板是否迫使你写出难看的代码?

我一直用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文件吗?

iphone storyboard ios segue

9
推荐指数
2
解决办法
1105
查看次数

如何在iOS上处理时间事件?

我正在编写一个iPad应用程序,当这一天变为星期日时我必须更改图形.

我直截了当的解决方案是检查- (void)applicationDidBecomeActive:(UIApplication *)application或-(void)viewWillAppear:(BOOL)animated方法中的日期,并设置一个计时器,如每10分钟,以检查应用程序处于活动状态时是否已将日期更改为星期日.

有没有另一种,也许更有效的方法来处理这个问题?

iphone date timer ipad ios

7
推荐指数
1
解决办法
2835
查看次数

计步器在背景中

我知道这已被问过100万次,但我无法想出来.

因此,如果他们将应用程序发送到de background超过10分钟,我需要构建一个计步器应用程序并继续计算步骤事件.

客户端根本不想使用GPS,也不会播放静音,因为Apple可能会拒绝它.

有没有人有想法如何做到这一点?

客户端正在使用Runtastic计步器应用程序作为参考,我一直在分析它,它不使用也不使用位置,音乐和在后台运行超过10分钟.

任何线索?这样做真的不可能吗?有可能Runtastic的人同意苹果使用一些秘密API让它在后台运行吗?

background objective-c accelerometer ios

7
推荐指数
1
解决办法
7059
查看次数

关闭JSP时调用操作

我是java网络世界的新手,所以如果我说一些愚蠢的话,请原谅我.

我正在使用struts 2,我需要在关闭jsp时删除一个文件(位于服务器上).

有没有人知道怎么做?

提前致谢.

java jsp

4
推荐指数
1
解决办法
1948
查看次数

如何处理大JSON响应

我正在做一个简单的iphone应用程序,但是客户端发给我一个1.6mb的JSON文件,客户端不希望在后端再做任何事情,所以我需要一种有效的方法来处理这些数据,数据将会发送到稍后用于在应用程序内过滤和搜索.

你最重要的是解决这个问题.

提前致谢

更新

内存中的这个JSON大约是4.85mb,你们认为这对于一个人来说太多了NSDictionary.

iphone json objective-c ios

4
推荐指数
1
解决办法
1075
查看次数