协议委托没有被调用
问题描述:
嗨我试图从互联网上使用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];
被调用
答
问题正在发生的事情,因为你没有设置委托。 在你viewDidLoad
设置,如委托:
self.delegate = self;
+0
谢谢你不能相信我错过了。 –
+0
@JohandeKlerk:很高兴。感谢评论:) –
它可能需要委托设置为'self'。 – Hemang