Return Value in Blocks

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Return Value in Blocks

    Hi,

    ich habe eine Methode die mir Bilder aus dem Web ziehen soll. Dafür benutze ich SDWebImage

    Quellcode

    1. -(UIImage *) getImageFromDeviceWithFilename:(NSString *)fileName {
    2. NSString *suffix = @".jpg";
    3. if (self.isRetina) {
    4. suffix = @"@2x.jpg";
    5. }
    6. NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", BASE_URL, [fileName stringByReplacingOccurrencesOfString:@".jpg" withString:suffix]]];
    7. [SDWebImageDownloader.sharedDownloader downloadImageWithURL:url
    8. options:0
    9. progress:^(NSUInteger receivedSize, long long expectedSize)
    10. {
    11. // progression tracking code
    12. }
    13. completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished)
    14. {
    15. if (image && finished)
    16. {
    17. [[SDImageCache sharedImageCache] storeImage:image forKey:fileName];
    18. }
    19. }];
    20. }
    Alles anzeigen

    Jetzt fehlt mir da aber natürlich der return Value. Wie bekomm ich das bei so einem Asynchronen Block hin das ich das image was er runtergeladen hat zurückgibt?
  • Hallo,

    leider funktioniert das so wie Du es dir gedacht hast nicht. Du hast einen synchronen Methodenaufruf in dem Du das Holen des Bildes asynchron über einen Block initiierst.
    Du könntest in der Blockcompletion eine Notification senden oder Du gibst in getImageFromDeviceWithFilename ein Objekt mit das sich für das Bild interessiert. Diesem Objekt kannst Du in der Completion das Bild über ein Property / Protocol Methode übergeben.

    Schöne Weihnachten

    Jürgen