gpt4 book ai didi

objective-c - 协议(protocol)委托(delegate)未被调用

转载 作者:行者123 更新时间:2023-11-28 22:45:44 24 4
gpt4 key购买 nike

您好,我正在尝试使用 GCD 从 Internet 下载照片。下载图像后,我调用委托(delegate)让全类知道图像已下载。

这是我用来下载图片的代码

-(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)的方式

@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>

最后我实现了协议(protocol)方法

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

问题是 gotVenuePhotos 永远不会被调用,即使在我的图像下载器中 [self.delegate gotVenuePhotos:image]; 被调用

最佳答案

出现此问题是因为您没有设置委托(delegate)。在您的 viewDidLoad 中将委托(delegate)设置为:

self.delegate = self;

关于objective-c - 协议(protocol)委托(delegate)未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13244745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com