0

こんにちは私はGCDを使用してインターネットから写真をダウンロードしようとしています。画像がダウンロードされたら、デリゲートに電話して、画像がダウンロードされたことをクラスに知らせます。

これが私が画像をダウンロードするために使用するコードです

-(void)getVenuePhotos:(NSString  *)venueID
{
    dispatch_queue_t  getVenuePhotos =  dispatch_queue_create ( "getVenuePhotos" ,  NULL );
    dispatch_async (getVenuePhotos, ^{

       //Download image, Lots of code not displaying
        UIImage *image  = [[UIImage alloc] initWithData:photoData];

        dispatch_async(dispatch_get_main_queue(),^{
            //This delegate doesn't get called
            [self.delegate gotVenuePhotos:image];  
        });
    });
    dispatch_release (getVenuePhotos);
}

これが私のPOIPhoto.hに私のプロトコルを実装した方法です

@protocol POIPhotoProtocol <NSObject>
-(void)gotVenuePhotos:(UIImage *)image;
@end

@interface POIPhoto : NSObject

-(void)getVenuePhotos:(NSString *)venueID;

@property(nonatomic, weak) id <POIPhotoProtocol> delegate;

@end

そして私のクラスでは、コールバックが欲しい

@interface PoiDetailViewController : UIViewController <POIPhotoProtocol>

そして最後に、プロトコルメソッドを実装します

-(void)gotVenuePhotos:(UIImage *)image
{
   self.venuePhoto.image = image;
}

問題はgotVenuePhotos、私の画像ダウンローダーで呼び出されても、呼び出されないこと[self.delegate gotVenuePhotos:image]; です

4

1 に答える 1

2

デリゲートを設定していないため、問題が発生しています。あなたのviewDidLoadセットでは、デリゲートは次のようになります。

self.delegate = self;
于 2012-11-06T05:11:27.697 に答える