代码之家  ›  专栏  ›  技术社区  ›  Pavel Zdenek

如何使用`removeCoookiesInceDate`?

  •  11
  • Pavel Zdenek  · 技术社区  · 10 年前

    有一种新的伟大方法 NSHTTPCookieStorage ,从MacOS 10.10和iOS 8.0开始提供。从微不足道的谷歌点击量来看,目前还没有人注意到这一点。这并不奇怪,因为它甚至还没有出现在Apple开发门户文档中,只是在标题中。但我仍然希望有人知道如何使用它,因为我不知道:)我正在尝试使用它来清除所有cookie,而不是尴尬的cookie jar迭代。所以我用

    [NSDate dateWithTimeIntervalSince1970:0]
    

    和BOOM, EXC_BAD_ACCESS 在里面 MemoryCookies::visitCookies 。好吧,UN*X时代可能太刻薄了。所以我试着

    [NSDate dateWithTimeIntervalSinceNow:-86400];
    

    再次按下BOOM(动臂)。所以我继续划分时间间隔,发现它确实需要至少一个饼干,至少和 date 参数因此,无论如何,您都必须迭代cookie才能找到最旧的cookie 然后 称之为新的闪亮方法。这太不切实际了,我甚至敢称之为bug。

    思想?

    2 回复  |  直到 10 年前
        1
  •  4
  •   Kyle Redfearn    8 年前

    我确实认为这是iOS 8所有版本中的一个错误。我能够在iOS 8.3中触发此操作。我决定手动删除cookie,如下所示:

    NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
    for (NSHTTPCookie *cookie in cookies) {
        [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
    }
    
        2
  •  3
  •   Pavel Zdenek    7 年前

    至少从iOS 8.1开始,它就如预期的那样工作,即无论年龄如何,都会删除cookie,并且不会崩溃。有趣的是,它还在 the headers 但在Cocoa参考中没有 iOS 也不 OSX 。可能是 NSHTTPCookieStorage 自iOS 2.0以来,仍然是“开发中的API”。

    更新 现在也在 Cocoa reference docs