2 votes

MacOS 10.13 : "La planification du chargeur NSURLDownload n'est plus prise en charge."

En exécutant mon application macOS dans macOS 10.13, je vois imprimé dans la console :

La planification du chargeur NSURLDownload n'est plus prise en charge.

Que signifie cela ?

5voto

granada29 Points 61

Le programme de mise à jour Sparkle semble être le coupable dans les cas que j'ai trouvés. Je suppose que l'équipe de développement de Sparkle va s'en charger et espérons que nous ne verrons plus le message une fois que Sparkle sera mis à jour.

3voto

Jerry Krinock Points 1540

Il semble signifier Vous venez de créer une instance de la classe dépréciée NSURLDownload.

Pour le montrer, créez un nouveau projet d'outil en ligne de commande Cocoa dans Xcode et remplacez le code dans main.m par le suivant :

#import 

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSURL* url = [[NSURL alloc] initWithString:@"https://example.com"];
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url                                                                        
                                                               cachePolicy:NSURLRequestReloadIgnoringCacheData
                                                           timeoutInterval:30.0];
        NSLog(@"Affichera une phrase étrange dans la console") ;
        [[NSURLDownload alloc] initWithRequest:request
                                      delegate:nil];
        NSLog(@"A affiché une phrase étrange dans la console") ;
    }
    return 0;
}

Compilez et exécutez. J'obtiens le résultat suivant dans la console (horodatages supprimés) :

Affichera une phrase étrange dans la console :
La planification du chargeur NSURLDownload n'est plus supportée.
A affiché une phrase étrange dans la console

Je dirais que la "solution" est de remplacer le NSURLDownload déprécié par NSURLSession.

0voto

Conor Points 403

Vous pouvez le corriger directement dans le code source de Sparkle. Mettez à jour le fichier SUAppcast.m à la ligne 82 en remplaçant NSURLDownload par ce qui suit :

NSURLSessionDownloadTask *downloadTask = [[NSURLSession sharedSession] downloadTaskWithRequest:request completionHandler:^(NSURL *location, __unused NSURLResponse *response, NSError *error) {

    if (location) {
        NSString *destinationFilename = NSTemporaryDirectory();
        if (destinationFilename) {
            // Le fichier ne persistera pas s'il n'est pas déplacé, Sparkle le retirera plus tard.
            destinationFilename = [destinationFilename stringByAppendingPathComponent:@"Appcast.xml"];

            NSFileManager *fileManager = [NSFileManager defaultManager];
            NSError *anError = nil;
            NSString *fromPath = [location path];
            if ([fileManager fileExistsAtPath:destinationFilename])
                [fileManager removeItemAtPath:destinationFilename error:&anError];
            BOOL fileCopied = [fileManager moveItemAtPath:fromPath toPath:destinationFilename error:&anError];
            if (fileCopied == NO) {
                [self reportError:anError];
            } else {
                self.downloadFilename = destinationFilename;

                dispatch_async(dispatch_get_main_queue(), ^{
                    [self downloadDidFinish:[[NSURLDownload alloc] init]];
                });
            }
        }
    } else {
            [self reportError:error];
    }
 }];

[downloadTask resume];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X