应该如何使用“removeCookiesSinceDate”?

How is `removeCookiesSinceDate` supposed to be used?

NSHTTPCookieStorage 有这个新的好方法,从 MacOS 10.10 和 iOS 8.0 开始可用。从微不足道的 Google 次点击猜测,目前还没有人注意到它。这并不奇怪,因为它甚至还没有出现在 Apple 开发门户文档中,仅出现在 header 中。但我仍然希望有人知道如何使用它,因为我不知道 :) 我正在尝试使用它来清除所有 cookie,而不是令人尴尬的 cookie jar 迭代。所以我用

来称呼它
[NSDate dateWithTimeIntervalSince1970:0]

和 BOOM,EXC_BAD_ACCESSMemoryCookies::visitCookies。好吧,UN*X epoch 可能太刻薄了。所以我尝试了

[NSDate dateWithTimeIntervalSinceNow:-86400];

又是一声巨响。所以我继续划分间隔,发现它确实需要至少一个至少与 date 参数一样旧的 cookie。因此,您无论如何都必须迭代 cookie 以找到最旧的 然后 调用新的 shiny 方法。它是如此荒谬的不切实际,我什至敢称它为错误。

想法?

它至少从 iOS 8.1 开始按预期工作,即无论年龄如何都会删除 cookie,并且不会崩溃。有趣的是,它还在 the headers but not in the Cocoa reference for iOS neither OSX 中。自从 iOS 2.0.

以来,可能 NSHTTPCookieStorage 仍然是 "API in development"

更新 现在也在 Cocoa reference docs

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

NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
for (NSHTTPCookie *cookie in cookies) {
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}