Согласно проблемам NSURLSessionDownloadTask с сохранением почти полных предупреждений диска и https://forums.developer.apple.com/thread/43263 , похоже, что вы получите ошибка и его домен будут NSPOSIXErrorDomain
с кодом ошибки ENOSPC
(Ошибка, Без пробела).
Существует также возможность получить ошибку с доменом NSCocoaErrorDomain
и код ошибки NSFileWriteOutOfSpaceError
.
public func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
if let nserror = error as? NSError {
if (nserror.domain == NSPOSIXErrorDomain && nserror.code == ENOSPC) ||
(nserror.domain == NSCocoaErrorDomain && nserror.code == NSFileWriteOutOfSpaceError) {
// Not enough space
}
}
}
Это не случай, когда weakKeys
означает «собирать ключи, но сохранить значения», и это тот случай, когда weakValues
означает «собирать значения, но сохраняйте ключи ».
То, что делает weakKeys
, говорит:« когда больше нет сильных ссылок на клавишу , соберите всю запись ». То, что делает weakValues
, это говорит: «когда больше нет сильных ссылок на значение , соберите всю запись». Поэтому, когда вы используете оба, вся запись собирается, когда либо ключ, либо значение не имеют строгих ссылок, указывающих на него.