안녕하세요, 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
에서 같은 대리자를 설정합니다. – Hemang