协议委托没有被调用

问题描述:

嗨我试图从互联网上使用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];被调用

+5

它可能需要委托设置为'self'。 – Hemang

问题正在发生的事情,因为你没有设置委托。 在你viewDidLoad设置,如委托:

self.delegate = self; 
+0

谢谢你不能相信我错过了。 –

+0

@JohandeKlerk:很高兴。感谢评论:) –