こんにちは私は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];
です